我正在为CraftBukkit编写插件,现在已经到了将类和方法拆分为单独的文件进行组织的阶段。我的问题是我需要将Plugin传递给其他类才能使用其方法。例:
SimpleBans.java
public class SimpleBans extends JavaPlugin {
private final DatabaseManager dm = new DatabaseManager(this);
}
数据库管理器
public class DatabaseManager {
private Plugin plugin;
public DatabaseManager(SimpleBans pluginConstructor) {
plugin = pluginConstructor;
}
public void writeData(String SQL) {
// Pseudo code: Write plugin.getName(); into the database.
}
现在工作正常。但是,如果我想使用另一个类的
writeData
方法,则没有任何要传递的参数,例如:PlayerListener.java
public class PlayerListener {
private final DatabaseManager dm = new DatabaseManager(SOMETHINGGOESHERE);
}
我也不能在其中使用null,因为它必须是一个插件来匹配
DatabaseManager.java
中的构造函数参数。多年来一直困扰着我。任何帮助都将受到欢迎。
最佳答案
不要尝试在DatabaseManager
中创建新的PlayerListener
。而是将DatabaseManager
用作侦听器类的构造函数参数。这样,您可以在创建侦听器时使用已经构造的DatabaseManager
。