Перечисления Enum в Java - Часть 1
Данная статья:
- написана командой Vertex Academy. Надеемся, что она Вам будет полезна. Приятного прочтения!
- это одна из статей из нашего "Самоучителя по Java"
Привет! Теме что такое Enums (перечисления) мы посвятим 3 статьи:
1. Перечисления Enum в Java - Часть 1
2. Перечисления Enum в Java - Часть 2
3. Перечисления Enum в Java - Часть 3
Ниже наша первая статья. Приятного прочтения.
Что такое Enums
"Чай, кофе, капучино?"
"Зима, весна, лето, осень?"
В жизни часто у нас есть выбор из ограниченного количества вариантов. Это можно сравнить с "меню", из которого мы можем выбирать.
Именно Enum позволяет создать такое "меню" - ограниченый набор значений, из которого пользователь может выбирать то, что ему нужно.
Как представить такое "меню" в коде? Как говорится, лучше один раз увидеть:
1 2 3 4 5 6 |
public enum myEnum { WINTER, SUMMER, SPRING, FALL; } |
Вот мы и создали наш первый Enum! Выглядит просто, правда?
Давайте обратим внимание на ключевые моменты:
- Enum - это отдельная структура. Он может находится в отдельном файле, а может быть частью класса. Но при этом enum не обязательно должен лежать в каком-либо классе. При таком подходе мы как бы создаем еще один класс, только вместо слова "class" пишем "enum". Посмотрите - даже в IDE они выделены отдельно:
- У enum-ов есть модификатор доступа. Если Ваш enum не лежит внутри какого-нибудь класса, он должен быть объявлен public. Если сделать его private, Вы получите ошибку:
И правильно - как тогда им пользоваться? 🙂
Если же enum будет "внутри" класса, он может быть объявлен private:
- Все "опции" (а на деле - объекты), которые лежат в enum-е, принято писать большими буквами. Если написать их маленькими ничего плохого не случится. Мы рекомендуем писать большими буквами, поскольку это общепринятая практика.
- Обратите внимание, что объекты, которые лежат в enum-е, пишутся через запятую:
В конце мы написали точку с запятой.
Концепция понятна - как его применить? Как обратиться к этому enum-у? Давайте посмотрим на примере.
Пример 1
Мы уже описывали один enum выше. Давайте создадим такой же, только для наглядности назовем его не myEnum, а Seasons("времена года"):
1 2 3 4 5 6 |
public enum Seasons { WINTER, SUMMER, SPRING, FALL; } |
Теперь создадим такой main:
1 2 3 4 5 6 7 8 |
public class Test { public static void main(String[] args) { System.out.println(Seasons.WINTER); System.out.println(Seasons.SUMMER); System.out.println(Seasons.SPRING); System.out.println(Seasons.FALL); } } |
Получим:
Отлично! Давайте посмотрим на код внимательнее:
- Когда мы вызываем объекты из enum-а, мы сначала пишем название самого enum-а, а потом через точку - название объекта:
Seasons.WINTER
Ну а что, если в enum-е много объектов? Опять руками писать?
Давайте оптимизируем с помощью for each.
Пример 2
Если Вы не знаете, что такое for each, прочитайте сначала эту статью:
1 2 3 4 5 6 7 |
public class Test { public static void main(String[] args) { for (Seasons s : Seasons.values()) { System.out.println(s); } } } |
Запустим этот код - получим:
Что это значит?
- У enum-ов есть следующий метод - values(). Он возвращает массив значений, которые хранятся в данном enum-е.
- С помощью оператора for each мы проходимся по этому массиву и выводим его значения.
Пример 3
Еще enum-ы очень удобно применять в операторах if или switch-case (Урок 16: Условный оператор if в Java. Оператор switch) . Можно сказать, что enum-ы созданы для этого! Давайте попробуем.
Давайте считать, что у нас есть такой же enum как и в прошлый раз - enum Seasons. Запустим используя такой main:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class Test { public static void main(String[] args) { Seasons arg = Seasons.FALL; switch (arg) { case WINTER: System.out.println("It's winter! Christmas time!"); break; case SUMMER: System.out.println("It's summer! Let's go to the beach!"); break; case SPRING: System.out.println("It's spring! Easter is coming!"); break; case FALL: System.out.println("It's fall! Helloween is coming!"); break; } } } |
Если запустить, в консоли увидим:
Комментарии:
- Как видите, мы создали объект типа enum:
Seasons arg = Seasons.FALL;
- Потом мы создали оператор switch, который печатает сообщение в зависимости от времени года. Обратите внимание - в case мы не должны писать полный путь (например, Seasons.FALL), а только название объекта - например, FALL:
case WINTER:
Что еще нужно знать об enum
Отлично, с основными применениями enum-а мы разобрались. Но, знаете, это еще не все что нужно знать. Enum-ы выглядят просто - но на самом деле у них есть:
- конструктор
- могут быть методы
- и и и... много интересного!
Заинтересовали? Тогда смотри вторую статью по Enum здесь.
Надеемся, что наша статья была Вам полезна. Можно записаться к нам на курсы по Java на сайте.