我编写了getPlugin()
方法,以便能够从另一个类获取主类。
public class Main extends JavaPlugin {
public Main getPlugin() {
return this;
}
}
但是当我尝试称呼它时...
public class Arena {
private Main plugin = Main.getPlugin();
}
... Eclipse给了我以下错误:
无法从类型Main中静态引用非静态方法getPlugin()
我使用过static,但是static在很多不同的地方都会给我带来麻烦,而且我已经看到static通常是做事情的一种坏方法。导致内存泄漏和东西。
我试过使用getter和setter,但是这些也需要是静态的吗?
我一直在使用的代码非常凌乱,我想找到一种访问另一个类的更简洁的方法。
最佳答案
如果要避免使用静态方法,则需要将变量作为参数传递给对象的构造函数。在您的示例中,它将像这样工作:
public class Arena {
private final Main plugin;
public Arena(Plugin plugin) {
this.plugin = plugin;
}
}
然后,您可以从主插件类创建一个Arena,然后将
this
作为参数传递:public class Main extends JavaPlugin {
@Override
public void onEnable() {
Arena arena = new Arena(this);
}
}