Перечисления Enum в Java - Часть 1

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Данная статья:

  • написана командой Vertex Academy. Надеемся, что она Вам будет полезна. Приятного прочтения!
  • это одна из статей из нашего "Самоучителя по Java"

Привет!  Теме что такое Enums (перечисления) мы посвятим 3 статьи:

1. Перечисления Enum в Java - Часть 1

2. Перечисления Enum в Java - Часть 2

3. Перечисления Enum в Java - Часть 3

Ниже наша первая статья. Приятного прочтения.

Что такое Enums

"Чай, кофе, капучино?"

"Зима, весна, лето, осень?"

В жизни часто у нас есть выбор из ограниченного количества вариантов. Это можно сравнить с "меню", из которого мы можем выбирать.

Именно Enum позволяет создать такое "меню" - ограниченый набор значений, из которого пользователь может выбирать то, что ему нужно.

Как представить такое "меню" в коде? Как говорится, лучше один раз увидеть:

Вот мы и создали наш первый Enum! Выглядит просто, правда?

Давайте обратим внимание на ключевые моменты:

  • Enum - это отдельная структура. Он может находится в отдельном файле, а может быть частью класса. Но при этом enum не обязательно должен лежать в каком-либо классе. При таком подходе мы как бы создаем еще один класс, только вместо слова "class" пишем "enum". Посмотрите - даже в IDE они выделены отдельно:

  • У enum-ов есть модификатор доступа. Если Ваш enum не лежит внутри какого-нибудь класса, он должен быть объявлен public. Если сделать его private, Вы получите ошибку:

И правильно - как тогда им пользоваться? 🙂

Если же enum будет "внутри" класса, он может быть объявлен private:

  • Все "опции" (а на деле - объекты), которые лежат в enum-е, принято писать большими буквами. Если написать их маленькими ничего плохого не случится. Мы рекомендуем писать большими буквами, поскольку это общепринятая практика.
  • Обратите внимание, что объекты, которые лежат в enum-е, пишутся через запятую:

В конце мы написали точку с запятой.

Концепция понятна - как его применить? Как обратиться к этому enum-у? Давайте посмотрим на примере.

Пример 1

Мы уже описывали один enum выше. Давайте создадим такой же, только для наглядности назовем его не myEnum, а Seasons("времена года"):

Теперь создадим такой main:

Получим:

Отлично! Давайте посмотрим на код внимательнее:

  • Когда мы вызываем объекты из enum-а, мы сначала пишем название самого enum-а, а потом через точку - название объекта:

Seasons.WINTER

Ну а что, если в enum-е много объектов? Опять руками писать?

Давайте оптимизируем с помощью for each.

Пример 2

Если Вы не знаете, что такое for each, прочитайте сначала эту статью:

Запустим этот код - получим:

Что это значит?

  • У enum-ов есть следующий метод - values(). Он возвращает массив значений, которые хранятся в данном enum-е.
  • С помощью оператора for each мы проходимся по этому массиву и выводим его значения.

Пример 3

Еще enum-ы очень удобно применять в операторах if или switch-case (Урок 16: Условный оператор if в Java. Оператор switch. Можно сказать, что enum-ы созданы для этого! Давайте попробуем.

Давайте считать, что у нас есть такой же enum как и в прошлый раз - enum Seasons. Запустим используя такой main:

Если запустить, в консоли увидим:

Комментарии:

  • Как видите, мы создали объект типа enum:

Seasons arg = Seasons.FALL;

  • Потом мы создали оператор switch, который печатает сообщение в зависимости от времени года. Обратите внимание - в case мы не должны писать полный путь (например, Seasons.FALL), а только название объекта - например, FALL:

case WINTER:

Что еще нужно знать об enum

Отлично, с основными применениями enum-а мы разобрались. Но, знаете, это еще не все что нужно знать. Enum-ы выглядят просто - но на самом деле у них есть:

  • конструктор
  • могут быть методы
  • и и и... много интересного!

Заинтересовали? Тогда смотри вторую статью по Enum здесь.


Надеемся, что наша статья была Вам полезна.  Можно записаться к нам на курсы по Java на сайте.

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr
Самоучители--узнать детальнее--