У меня есть Enum среднего размера, в котором я хочу получить значения из заданной String. Например,
GAUL_RAM("gaul_ram.schem", new Location(Bukkit.getWorld(Statics.worldName), 0, 100, 0)),
GAUL_RAM_UPGRADED("gaul_ram_upgraded.schem", new Location(Bukkit.getWorld(Statics.worldName), 0, 100, 0)),
GREEK_RAM("greek_ram.schem", new Location(Bukkit.getWorld(Statics.worldName), 0, 100, 0)),
GREEK_RAM_UPGRADED("greek_ram_upgraded.schem", new Location(Bukkit.getWorld(Statics.worldName), 0, 100, 0)),
PERSIA_RAM("persia_ram.schem", new Location(Bukkit.getWorld(Statics.worldName), 0, 100, 0)),
PERSIA_RAM_UPGRADED("persia_ram_upgraded.schem", new Location(Bukkit.getWorld(Statics.worldName), 0, 100, 0)),
CARTHAGE_RAM("carthage_ram.schem", new Location(Bukkit.getWorld(Statics.worldName), 0, 100, 0)),
CARTHAGE_RAM_UPGRADED("carthage_ram_upgraded.schem", new Location(Bukkit.getWorld(Statics.worldName), 0, 100, 0));
У меня есть указанное выше перечисление. Мне может быть передано значение, например, "персия". Тогда я хочу извлечь значение String из константы Персии PERSIA_RAM
, а также из ее объекта Location
.
Однако я не вижу «чистого» способа сделать это. На ум приходят решения: проверка предоставленной строки «persia», перебор всех значений в перечислении через Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants().toString().toLowerCase();
, а затем использование какого-то разделителя в знаках подчеркивания '_' для получения первого слова в константе перечисления.
Опять же, это не лучшее решение. Есть ли лучший способ выполнить sh эту задачу?