在 Spigot 中初始化命令

Initialize a command in Spigot

我正在学习 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);
}

两者有什么区别吗?为什么一个比另一个更好用?请不要以偏好回答,只回答优缺点,或者他们是否做同样的事情。

我猜这些名字只是占位符? 比:是的,两者都可以。我仍然会推荐你上面的那个。 大多数时候你会有很多数据管理器 类 例如一个 PlayerManager 存储您的自定义播放器数据。您当然可以在 Manager 中将所有内容设为静态或将其设为单例,但最好在 on enable 方法中对其进行初始化以允许“/reload”正常工作,因为您可能也想在那里注入 main。 回到为什么存储主要。如果您将 main 存储在命令中,则可以例如只需执行 'main.getPlayerManager()' 并且不必使用任何静态变通方法。

还有一种注入命令的方法。您可以通过反射将命令添加到命令映射中,这不需要您 to.define plugin.yml 中的命令。