How to get an enum value from a string value in Java
Как получить перечисляемое значение из строкового значения в Java
Допустим, у меня есть перечисление, которое просто
publicenumBlah { A, B, C, D }
и я хотел бы найти перечисляемое значение строки, например, "A" которое было бы Blah.A. Как это можно было бы сделать?
Это Enum.valueOf() тот метод, который мне нужен? Если да, то как я могу это использовать?
Переведено автоматически
Ответ 1
Да, Blah.valueOf("A") даст вам Blah.A.
Обратите внимание, что имя должно точно совпадать, включая регистр: Blah.valueOf("a") и Blah.valueOf("A ") оба выдают IllegalArgumentException.
Статические методы valueOf() и values() создаются во время компиляции и не отображаются в исходном коде. Однако они появляются в Javadoc; например, Dialog.ModalityType показаны оба метода.
Ответ 2
Другое решение, если текст не совпадает со значением перечисления:
/** * A common method for all enums since they can't have another base class * @param <T> Enum type * @param c enum type. All enums must be all caps. * @param string case insensitive * @return corresponding enum, or null */ publicstatic <T extendsEnum<T>> T getEnumFromString(Class<T> c, String string) { if( c != null && string != null ) { try { return Enum.valueOf(c, string.trim().toUpperCase()); } catch(IllegalArgumentException ex) { } } returnnull; }
Then in my enum class I usually have this to save some typing: