Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我怎样才能把我的主课退回来?_Java - Fatal编程技术网

Java 我怎样才能把我的主课退回来?

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() { }

这个主类由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 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。值得注意的是,当类需要实例时,它只需调用public
Demo.getInstance()
方法即可。“此全局访问点不再需要重新初始化。@答案中添加了“单面体”。