我正在为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

09-05 20:35