Ответ
String Enum — это паттерн для создания набора строго типизированных строковых констант, имитирующий поведение перечисления (enum), когда использование настоящего enum невозможно или неудобно (например, для совместимости с API, ожидающими строки).
Пример реализации:
public final class Status {
public static final String PENDING = "PENDING";
public static final String APPROVED = "APPROVED";
public static final String REJECTED = "REJECTED";
private Status() {
// Приватный конструктор запрещает создание экземпляров
throw new AssertionError("Cannot instantiate");
}
}
// Использование
String currentStatus = Status.APPROVED;
Преимущества:
- Безопасность от опечаток: Использование констант вместо "сырых" строк (
"APROVED"). - Удобство рефакторинга: IDE могут отслеживать ссылки и автоматически переименовывать.
- Семантика и читаемость: Именованные константы делают код понятнее.
Недостатки (по сравнению с enum):
- Нет проверки на этапе компиляции: В метод можно передать любую строку, а не только константы из класса.
- Отсутствие дополнительной функциональности: Нет встроенных методов, таких как
values(),ordinal()или возможность привязки данных к каждому значению.
Альтернатива: Если нужна строгая типизация и проверка на этапе компиляции, используйте стандартный enum с переопределённым методом toString() для получения строкового представления.