Перечисления Java
перечисления
An enum
— это специальный «класс», который представляет собой группу
констант (неизменяемых переменных, таких как final
переменные).
Чтобы создать enum
, используйте enum
ключевое слово (вместо класса или интерфейса) и разделите константы запятой. Обратите внимание, что они должны быть заглавными буквами:
Пример
enum Level {
LOW,
MEDIUM,
HIGH
}
Вы можете получить доступ к enum
константам с помощью точечного синтаксиса:
Level myVar = Level.MEDIUM;
Enum — это сокращение от «enumerations», что означает «конкретно перечисленные».
Перечисление внутри класса
Вы также можете иметь enum
внутри класса:
Пример
public class Main {
enum Level {
LOW,
MEDIUM,
HIGH
}
public static void main(String[] args) {
Level myVar = Level.MEDIUM;
System.out.println(myVar);
}
}
Вывод будет:
MEDIUM
Перечисление в операторе Switch
Перечисления часто используются в switch
операторах для проверки соответствующих значений:
Пример
enum Level {
LOW,
MEDIUM,
HIGH
}
public class Main {
public static void main(String[] args) {
Level myVar = Level.MEDIUM;
switch(myVar) {
case LOW:
System.out.println("Low level");
break;
case MEDIUM:
System.out.println("Medium level");
break;
case HIGH:
System.out.println("High level");
break;
}
}
}
Вывод будет:
Medium level
Цикл через перечисление
Тип перечисления имеет values()
метод, который возвращает массив всех констант перечисления. Этот метод полезен, когда вы хотите перебрать константы перечисления:
Пример
for (Level myVar : Level.values()) {
System.out.println(myVar);
}
Вывод будет:
LOW
MEDIUM
HIGH
Разница между перечислениями и классами
У enum
can, как и у class
, есть атрибуты и методы. Единственная разница в том, что константы перечисления - это public
, static
и final
(неизменяемые - не могут быть переопределены).
Не enum
может использоваться для создания объектов и не может расширять другие классы (но может реализовывать интерфейсы).
Зачем и когда использовать перечисления?
Используйте перечисления, когда у вас есть значения, которые, как вы знаете, не изменятся, например дни месяца, дни, цвета, колода карт и т. д.