Что такое Энум?

Тип enum, представленный в Java 5, представляет собой специальный тип данных, который позволяет переменной быть набором предопределенных констант. Он часто используется, когда мы знаем все возможные значения во время компиляции, а набор констант можно изменить, когда они нам понадобятся.

История перечисления

Пока не был представлен тип enum, разработчики Java использовали для определения констант дополнительные комментарии:

В этом коде понедельник должен быть зафиксирован на 1, вторник на 2 и среда на 3. Поскольку это правило установлено для комментария, будет проблемой разделить комментарий и код или удалить один из них, особенно комментарий. Мы можем улучшить его, если узнаем значение чисел по их именам.

Теперь у каждого числа есть собственное имя, которое мы можем легко вычислить, чтобы оператор switch стал более простым. Кроме того, переменные становятся постоянными по ключевому слову final и присваиваются только один раз в памяти по ключевому слову static. Обратите внимание, что мы можем улучшить исходный код при использовании интерфейса, так как эта форма кода ( private final static ) может быть опущена в нем:

Выглядит намного лучше, не так ли? Тем не менее, у него есть одна тривиальная проблема, из-за которой он не может гарантировать безопасность во время компиляции, когда вы пытаетесь сравнить два разных набора констант, таких как:

if (Day.Monday == Month.January) {
    System.out.println("Mondays are bad");
} 

Если компилятор Java не находит такой исходный код и не помечает его как ошибку, у вас может возникнуть непредвиденная ошибка во время выполнения. Чтобы избавиться от риска, один умный разработчик Java может предложить способ изменить интерфейсы на классы и сделать тип данных каждой константы не int и не что-то еще, а свой класс, чтобы экземпляр их класса был назначен каждому из них. Если да, то наверняка компилятор обнаружит ошибку, поскольку Day.Monday и Month.January относятся к разным типам данных. Но в этом удивительном методе все еще остается одно ограничение: вы больше не можете использовать оператор switch, потому что он не поддерживает настраиваемые типы данных. Бум! Вот причина, по которой тип enum был представлен в Java 5.

Вывод

Все имеет свою историю. Миллионы возмущений разработчиков Java и тонны сломанных клавиатур накапливались так долго, что Sun Microsystems решила создать тип enum. В следующем посте будет рассказано, из чего он состоит и как работает. Спасибо за чтение.

использованная литература





https://www.baeldung.com/a-guide-to-java-enums

https://www.geeksforgeeks.org/enum-in-java/#:~:text=Enums%20are%20used%20when%20we, представлены%20using%20enum%20data%20type.