Я делаю плагин с Spigot (Minecraft), и я использую перечисления для хранения сообщений/языков, а также статус конкретной вещи. Проблема в том, что перечисление состояния зависит от перечисления сообщений. И перечисление сообщений зависит от файла messages.yml. Я знаю, как перезагрузить этот файл, но когда я это делаю, отправляемые сообщения обновляются, если я меняю переводы в файле messages.yml, но сообщения о статусе, которые хранятся в списке состояний, не обновляются.Я бы «перезагрузил» экземпляр enum
Поэтому я хотел бы знать, если это возможно удалить экземпляр перечисления и создать его снова к обновить их значения, как это делает, когда плагин будет перезагружен.
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;
}
}
Пожалуйста, не отвечайте, что я могу поставить ЖДАТЬ (Message.WAITING) и делать Status.WAITING.getName(), который будет делать name.getMessage() ;. Я привел этот код в качестве примера, мои функции не используют функцию getName(), просто значение перечисления, так что имя записано в перечислении сообщений.
Заранее благодарим, если кто-нибудь решит это. :)
Почему вы действительно должны использовать перечисления? Вы можете использовать класс с геттерами для всех сообщений, которые могли бы найти их в вашей конфигурации и хранить на карте, например – Kerooker
Хотя 'enums' может показаться отличной идеей для хранения сообщений - это действительно не так. Перечисления не предназначены для перезагрузки, они предназначены для констант, поэтому любые хаки, которые вы собрали вместе, просто не будут стоить усилий. Я рекомендую просто получать сообщение из файла напрямую. –