Добавление к самому высокому рейтингу ответа с полезной утилитой ...
valueOf()
выдает два разных исключения в тех случаях, когда ему не нравится его ввод.
IllegalArgumentException
NullPointerExeption
Если ваши требования таковы, что у вас нет никаких гарантий, что ваша String определенно будет соответствовать значению enum, например, если данные String поступают из базы данных и могут содержать старую версию enum, вам потребуется чтобы справиться с этим часто ...
Итак, я написал многократно используемый метод, который позволяет нам определять Enum по умолчанию, который будет возвращен, если передаваемая нами строка не совпадает.
private static <T extends Enum<T>> T valueOf( String name , T defaultVal) {
try {
return Enum.valueOf(defaultVal.getDeclaringClass() , name);
} catch (IllegalArgumentException | NullPointerException e) {
return defaultVal;
}
}
Используйте это так:
public enum MYTHINGS {
THINGONE,
THINGTWO
}
public static void main(String [] asd) {
valueOf("THINGTWO" , MYTHINGS.THINGONE);//returns MYTHINGS.THINGTWO
valueOf("THINGZERO" , MYTHINGS.THINGONE);//returns MYTHINGS.THINGONE
}