创建主要实例 class

Creating instances of the main class

有人告诉我,如果我想使用我的 main class 的实例,我应该使用构造函数来完成:

private <Main_Class_Name> plugin;
public <class_name>(<Main_Class_Name> plugin) {
    this.plugin = plugin;
}

为什么这样做比仅仅这样做更好(或者有何不同)?

private <Main_Class_Name> plugin = new <Main_Class_Name>();

您不能使用第二种方式来存储您的主插件实例,因为它会重建您已经构建的插件,但是存储您的主插件实例的最佳方式是将其保存到 public static onEnable 方法中的字段。

你不应该使用第二种模式,因为你永远不应该实例化你的主要 class。 也就是说,您的主 class 应该只有一个实例,即由插件管理器创建的实例。

在我看来,第一个模式需要太多的工作。 相反,.

无论如何,JavaPlugin extends PluginBase which implements Plugin,所以你甚至可以这样做:

MainClass main = (MainClass)Bukkit.getServer().getPluginManager().getPlugin("Plugin_Name");

使用 Bukkit,您可以创建主插件 (JavaPlugin) class 的实例,如下所示:

public class MyPlugin extends JavaPlugin {
    public static MyPlugin instance;

    public void onEnable() {
        instance = this;
    }
}

Bukkit 在内部实例化插件,但在服务器中激活的插件实例上调用 onEnable()。这似乎是一个普遍接受的方法。