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

    }
}

最佳答案

如果你想使用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;

然后您可以在 CoolDownrun() 方法调用中使用:

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/

相关文章:

java - 通过这两种方式更新方法内 Linkedlist 的值有什么区别?

java - 如何在 map View 上放置一个透明按钮?

java - Eclipse 标签的用途是什么——比如@author、@version、@link?

java - 然后单击 LibGDX 缩放文本按钮

java - 如何查找字符串中连续双字母(大写字母)的数量?

java - 如何使用随机库?

java - 为什么最佳实践因 OOP 中的静态类而异?

java - websphere liberty - 无法使用 slf4j 或 log4j 生成应用程序特定的日志记录

java - 如何通过CXF WSDL2JAVA生成代码获取Soap Header信息?

java - 无法创建 EGL 上下文