Получение enum по строке в Java — метод valueOf с примерами
В Java у каждого enum есть статический метод valueOf(String), который возвращает константу перечисления по её имени. Метод чувствителен к регистру, поэтому строку часто приходится приводить к верхнему регистру.
Чтобы понять этот пример, нужно знать:
Строки в Java
Перечисления (enum) в Java
Пример: поиск enum по строковому значению
public class EnumString {
public enum TextStyle {
BOLD, ITALICS, UNDERLINE, STRIKETHROUGH
}
public static void main(String[] args) {
String style = "Bold";
TextStyle textStyle = TextStyle.valueOf(style.toUpperCase());
System.out.println(textStyle);
}
}
Вывод:
BOLD
В этой программе у нас есть перечисление TextStyle со стилями текста: BOLD, ITALICS, UNDERLINE, STRIKETHROUGH. Строка style содержит текущий стиль ("Bold"), но не в верхнем регистре.
Мы вызываем TextStyle.valueOf() и передаём ему style.toUpperCase(), чтобы получить соответствующую константу перечисления. Без toUpperCase() пришлось бы:
TextStyle.valueOf(style)
И программа выбросила бы исключение No enum constant EnumString.TextStyle.Bold.
Предупреждение
valueOf() бросает IllegalArgumentException, если константа с таким именем не найдена. Если входные данные ненадёжны, оборачивайте вызов в try...catch или предварительно проверяйте имя.