Java 我怎样才能把我的主课退回来?
这个主类由Bukkit框架初始化,不能再次初始化Java 我怎样才能把我的主课退回来?,java,Java,这个主类由Bukkit框架初始化,不能再次初始化 public class Demo extends JavaPlugin { public void onEnable() { } } 如何从其他类访问其唯一实例 public class CoolDown extends BukkitRunnable { public CoolDown(Demo mainClass, int time) { } public void run() { }
public class Demo extends JavaPlugin {
public void onEnable() {
}
}
如何从其他类访问其唯一实例
public class CoolDown extends BukkitRunnable {
public CoolDown(Demo mainClass, int time) {
}
public void run() {
}
}
你必须重新发明新技术
要访问:
public class Cooldown extends BukkitRunnable {
@Override
public void run() {
Plugin main = Demo.getInstance();
main.getServer().broadcastMessage("No need to have the main instance as member variable on each class.");
}
}
你必须重新发明新技术
要访问:
public class Cooldown extends BukkitRunnable {
@Override
public void run() {
Plugin main = Demo.getInstance();
main.getServer().broadcastMessage("No need to have the main instance as member variable on each class.");
}
}
如果要使用OOP方式: 在
冷却时间
类中,有一个类型为演示
(或JavaPlugin扩展类)的字段。您还可以在此处创建将在构造函数中传递的任何其他字段
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语言!):在您的
Demo
类中,有一个类型为Demo
的公共静态字段,没有任何值(顺便说一句,这是在类删除之后)
在插件的enable方法中(我建议将其放在方法调用的第一行):
然后,您可以在冷却
的run()
方法调用中使用:
instance = this;
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();
}
}
如果要使用OOP方式: 在
冷却时间
类中,有一个类型为演示
(或JavaPlugin扩展类)的字段。您还可以在此处创建将在构造函数中传递的任何其他字段
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语言!):在您的
Demo
类中,有一个类型为Demo
的公共静态字段,没有任何值(顺便说一句,这是在类删除之后)
在插件的enable方法中(我建议将其放在方法调用的第一行):
然后,您可以在冷却
的run()
方法调用中使用:
instance = this;
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();
}
}
值得注意的是,当类需要实例时,它可以简单地调用public
Demo.getInstance()
方法。此全局访问点消除了重新初始化的需要。@答案中添加了Unihedron。值得注意的是,当类需要实例时,它只需调用publicDemo.getInstance()
方法即可。“此全局访问点不再需要重新初始化。@答案中添加了“单面体”。