Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

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 по перечислению, поля и методы.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.