我正在学习Spigot,许多教程都说要使用这种语法来初始化命令。
private Main plugin;
public Constructor(Main plugin) {
this.plugin = plugin;
plugin.getCommand("command").setExecutor(this);
}
但是我的Java知识告诉我这也可以。
public Command(Main plugin) {
plugin.getCommand("command").setExecutor(this);
}
两者之间有区别吗?为什么一个比另一个更好用?请不要只回答优缺点,或者是否做同样的事情。
答案 0 :(得分:0)
我猜这些名字只是占位符? 比:是的,两者都会起作用。我仍然会建议您上层。 大多数情况下,您将有很多数据管理器类,例如一个存储您的自定义播放器数据的PlayerManager。您当然可以使所有内容在Manager内为静态,也可以使其为单例,但是最好使用on enable方法对其进行初始化,以允许“ / reload”正常工作,因为您可能也希望在其中注入主体。 回到为什么要存储主体。如果您将主要存储在命令中,则可以例如只需执行“ main.getPlayerManager()”,而不必使用任何静态替代方法。
还有另一种注入命令的方式。您可以通过反射将命令添加到命令映射中,而不需要您在plugin.yml中定义命令。