Enums 我想:";“重新加载”;枚举实例

Enums 我想:";“重新加载”;枚举实例,enums,instance,reload,bukkit,Enums,Instance,Reload,Bukkit,我正在使用spiget(Minecraft)做一个插件,我使用enum来存储消息/语言以及特定事物的状态。 问题在于状态枚举依赖于消息枚举。消息枚举依赖于文件messages.yml。 我知道如何重新加载该文件,但当我这样做时,如果我更改文件messages.yml中的翻译,则发送的消息会更新,但存储在status enum中的状态消息不会更新 因此,我想知道是否有可能删除枚举实例并再次生成它以更新它们的值,就像重新加载插件时一样 公共枚举消息{ 等待(“状态等待”); 私有字符串路径; 消息

我正在使用spiget(Minecraft)做一个插件,我使用enum来存储消息/语言以及特定事物的状态。 问题在于状态枚举依赖于消息枚举。消息枚举依赖于文件messages.yml。 我知道如何重新加载该文件,但当我这样做时,如果我更改文件messages.yml中的翻译,则发送的消息会更新,但存储在status enum中的状态消息不会更新

因此,我想知道是否有可能删除枚举实例并再次生成它更新它们的值,就像重新加载插件时一样

公共枚举消息{
等待(“状态等待”);
私有字符串路径;
消息(字符串路径){
this.path=path;
}
公共字符串getMessage(){
返回file.getString(路径);
}
}
公共枚举状态{
正在等待(Message.WAITING.getMessage());
私有字符串名称;
状态(字符串名称){
this.name=名称;
}
公共getName(){
返回名称;
}

}
无法添加/删除到
枚举
,因为
枚举
在其他代码中引用。这与删除变量
foo
的所有跟踪,然后尝试调用
foo+1


如果要重新加载消息文件,可以执行file.reloadConfig(),它将从磁盘重新加载消息,然后在调用getMessage()时,它将在较新的文件中查找较新的消息。

您无法向
枚举添加/删除,因为
枚举
在其他代码中被引用。这与删除变量
foo
的所有跟踪,然后尝试调用
foo+1


如果要重新加载消息文件,可以执行file.reloadConfig(),它将从磁盘重新加载消息,然后在调用getMessage()时,它将在较新的文件中查找较新的消息。

为什么实际需要使用枚举?您可以使用一个包含所有消息的getter的类,该类可以在您的配置中找到它们并存储在映射中,例如,
enums
听起来似乎是存储消息的好主意,但事实并非如此。枚举不是为重新加载而设计的,它们是为常量而设计的,因此,您所做的任何修改都是不值得的。我的建议是直接从文件中获取消息。为什么实际需要使用枚举?您可以使用一个包含所有消息的getter的类,该类可以在您的配置中找到它们并存储在映射中,例如,
enums
听起来似乎是存储消息的好主意,但事实并非如此。枚举不是为重新加载而设计的,它们是为常量而设计的,因此,您所做的任何修改都是不值得的。我建议直接从文件中获取消息。我不想修改枚举的值,而是重新加载枚举类。例如,删除存储它的位置并再次生成它。它们的值在重新加载插件时会发生变化(如果文件被修改),所以我认为有可能只对一个枚举或所有插件强制重新加载。我已经测试了各种方法来重新加载我的插件,但enum保留了它们的值,但在我用plugman插件重新启动他时发生了变化。我不想修改enum的值,而是重新加载enum类。例如,删除存储它的位置并再次生成它。它们的值在重新加载插件时会发生变化(如果文件被修改),所以我认为有可能只对一个枚举或所有插件强制重新加载。我已经测试了各种方法来重新加载我的插件,但Enum保留了它们的值,但当我用plugman插件重新启动他时,这些值发生了变化。