enum
Объявляет перечисление — тип с фиксированным набором значений.
Доступно с: Java 5
Синтаксис
enum Name { A, B, C }Примеры
Перечисление и switch по нему:
enum Size { SMALL, MEDIUM, LARGE }
void main() {
Size size = Size.MEDIUM;
String label = switch (size) {
case SMALL -> "S";
case MEDIUM -> "M";
case LARGE -> "L";
};
IO.println(size + " " + label);
IO.println(Arrays.toString(Size.values()));
}Результат:
MEDIUM M
[SMALL, MEDIUM, LARGE]Поля, конструктор и методы в enum:
enum Coin {
PENNY(1), NICKEL(5), DIME(10);
private final int cents;
Coin(int cents) {
this.cents = cents;
}
int cents() {
return cents;
}
}
void main() {
IO.println(Coin.DIME.cents());
IO.println(Coin.valueOf("NICKEL").ordinal());
IO.println(Coin.PENNY.name());
}Результат:
10
1
PENNYПримечания
values() возвращает все значения по порядку, valueOf("NAME") находит значение по имени (для неизвестного имени — IllegalArgumentException), ordinal() — номер с нуля. Значения enum сравнивают через ==. Для множеств и словарей с ключами-enum есть быстрые EnumSet и EnumMap.
См. также
- switch — Выбирает ветку по значению; в форме выражения возвращает результат.
- record — Объявляет запись — неизменяемый класс для хранения данных с готовыми equals(), hashCode() и toString().
- sealed / permits — Ограничивает список классов, которым разрешено наследоваться от класса или реализовывать интерфейс.
Вопросы и ответы по теме
В учебнике
- Перечисления (enum) — Перечисления enum в Java: фиксированный набор значений, values() и valueOf(), switch по перечислению, поля и методы.