Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvOpEsVO 96 of 147 menu
◀ ▶

Получение enum по имени в Java

Статический метод valueOf принимает имя константы как String и возвращает соответствующий элемент перечисления. Имя должно совпадать с идентификатором константы в коде:

enum PostStatus { DRAFT, PUBLISHED, ARCHIVED }

Получим константу по строковому имени и выведем ее на экран:

PostStatus status = PostStatus.valueOf("PUBLISHED"); System.out.println(status);

Метод name() у константы возвращает то же имя, что ожидает valueOf. Так удобно сохранять статус в конфигурации и восстанавливать его при чтении:

PostStatus saved = PostStatus.ARCHIVED; String raw = saved.name(); PostStatus restored = PostStatus.valueOf(raw); System.out.println(restored == saved);

Если строка не совпадает ни с одной константой, вызов valueOf завершится исключением IllegalArgumentException. Перед разбором внешних данных имя лучше проверить по списку из values():

public class Main { static boolean isKnown(String name) { for (PostStatus status : PostStatus.values()) { if (status.name().equals(name)) { return true; } } return false; } public static void main(String[] args) { System.out.println(isKnown("DRAFT")); System.out.println(isKnown("UNKNOWN")); } }

Объявите enum Role с константами GUEST, USER и ADMIN. Дана строка:

String raw = "ADMIN";

Получите константу Role по этой строке и выведите её.

Объявите enum EmployeeType с константами INTERN и STAFF. Сохраните EmployeeType.STAFF в переменную, получите name(), затем снова константу через valueOf и выведите true, если ссылки совпали.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить