Encodera

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

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

Справочник Java

Enum.values()

Методы каждого enum: values() — все константы, valueOf() — константа по имени, ordinal() и name() — номер и имя.

Доступно с: Java 5

Синтаксис

public static E[] values()

Возвращаемое значение

E[]Новый массив со всеми константами в порядке объявления.

Примеры

Перебор констант с номером и именем:

enum Size { SMALL, MEDIUM, LARGE }
 
void main() {
    for (Size s : Size.values()) {
        IO.println(s.ordinal() + " " + s.name());
    }
    IO.println(Size.values().length);
}

Результат:

0 SMALL
1 MEDIUM
2 LARGE
3

valueOf() превращает строку в константу; имя должно совпадать точно, включая регистр:

enum Size { SMALL, MEDIUM, LARGE }
 
void main() {
    Size s = Size.valueOf("MEDIUM");
    IO.println(s == Size.MEDIUM);
    IO.println(Size.valueOf("large".toUpperCase()));
}

Результат:

true
LARGE

Неизвестное имя вызывает исключение:

enum Size { SMALL, MEDIUM, LARGE }
 
void main() {
    Size.valueOf("HUGE");
}

Результат:

Exception in thread "main" java.lang.IllegalArgumentException: No enum constant Main.Size.HUGE

Примечания

values() и valueOf() компилятор добавляет в каждый enum сам. values() каждый раз создаёт новый массив — в горячем цикле сохраните его в переменную. ordinal() зависит от порядка объявления, поэтому не храните его в базе данных: после добавления константы в середину все номера сдвинутся. name() всегда возвращает имя из кода, а toString() можно переопределить.

См. также

  • enum — Объявляет перечисление — тип с фиксированным набором значений.
  • EnumMap — Словарь, ключи которого — значения одного enum. Быстрый и хранит ключи в порядке объявления.
  • EnumSet — Множество значений одного enum. Работает как набор битовых флагов, но с понятным кодом.
  • IllegalArgumentException — Сообщает, что метод получил недопустимый аргумент.

Вопросы и ответы по теме

В учебнике

  • Перечисления (enum) — Перечисления enum в Java: фиксированный набор значений, values() и valueOf(), switch по перечислению, поля и методы.

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

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