gpt4 book ai didi

java - 我怎样才能返回我的主类?

转载 作者:行者123 更新时间:2023-12-01 16:56:37 25 4
gpt4 key购买 nike

该主类由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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com