Что такое паттерн String Enum в Java?

«Что такое паттерн String Enum в Java?» — вопрос из категории Паттерны, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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() для получения строкового представления.