我想“重新加载”一个枚举实例

时间:2016-12-03 18:26:28

标签: enums instance reload bukkit

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

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

public enum Message {

WAITING("Status.Waiting");

private String path;

Message(String path) {
this.path = path;
}

public String getMessage() {
    return file.getString(path);
}

}

public enum Status {

WAITING(Message.WAITING.getMessage());

private String name;

Status(String name) {
this.name = name;
}

public getName() {
return name;
}

}

请不要回答我可以放置WAITING(Message.WAITING)并执行将执行name.getMessage();的Status.WAITING.getName()。我把这段代码写成一个例子,我的函数不使用getName()函数,只使用枚举的值,所以名字写在消息枚举中。

如果有人解决此问题,请提前致谢。 :)

1 个答案:

答案 0 :(得分:0)

您无法添加/删除enum,因为其他代码中引用了enum。这与删除变量foo的所有痕迹然后尝试调用foo + 1

相同

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