该主类由Bukkit框架初始化,无法再次初始化。
public class Demo extends JavaPlugin {
public void onEnable() {
}
}
如何从其他类访问其唯一实例?
public class CoolDown extends BukkitRunnable {
public CoolDown(Demo mainClass, int time) {
}
public void run() {
}
}
最佳答案
如果你想使用OOP方式:
在您的 CoolDown
类中,有一个类型为 Demo
的字段(或您的 JavaPlugin 扩展类)。您还可以在此处创建要在构造函数中传递的任何其他字段。
private final Demo plugin;
private int time;
然后使用 CoolDown 的构造函数实例化字段
public CoolDown(Demo plugin, int time) {
this.plugin = plugin;
this.time = time;
}
现在您可以使用plugin
字段来满足您的需求。示例:
public void run() {
plugin.fooBar();
}
如果您想使用静态编程方式(不推荐,您使用的是 OOP 语言 Java!): Demo
类,有一个 Demo
类型的公共(public)静态字段,没有任何值(顺便说一句,这是在类声明之后)。
public static Demo instance;
在插件的启用方法中(我建议将其放在方法调用的第一行):
instance = this;
然后您可以在 CoolDown
的 run()
方法调用中使用:
Demo.instance.fooBar();
再次强调,我不建议在 Java 中使用静态编程。一般来说,这是一种懒惰且糟糕的做法。
以下是您的 OOP 编程的完整示例:
public class Demo extends JavaPlugin {
public void onEnable() {
Bukkit.getScheduler.scheduleMyEpicCooldown(new CoolDown(this, time), time);
}
}
public class CoolDown extends BukkitRunnable {
private final Demo plugin;
private int time;
public CoolDown(Demo plugin, int time) {
this.plugin = plugin;
this.time = time;
}
public void run() {
plugin.fooBar();
}
}
关于java - 我怎样才能返回我的主类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31880189/