创建主要实例 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()
。这似乎是一个普遍接受的方法。
有人告诉我,如果我想使用我的 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()
。这似乎是一个普遍接受的方法。