Перечисления автоматически включают два предопределенных метода: values() и valueOf().
Скачать исходники для статьи можно ниже
Их общая форма выглядит так:
public static тип_перечисления [] values() public static тип_перечисления valueOf(String строка)
Метод values() возвращает массив, содержащий список констант перечисления.
Метод valueOf() возвращает константу перечисления, значение
которой соответствует строке, переданной в аргументе строка.
В обоих случаях тип_перечисления — это тип перечисления.
Например, в случае с перечислением Apple, показанным выше, типом возвращаемого значения Apple. valueOf(“Winesapp”) будет Winesарр.
В следующей программе демонстрируется применение методов values()
и valueOf():
// Использование встроенных методов перечислений. // Перечисление сортов яблок, enum Apple { Jonathan, GoldenDel, RedDel, Winesap, Cortland } class EnumDemo2 { public static void main(String args[]) { Apple ap; System.out.println("Константы Apple:"); // применение values() Apple allapples[] = Apple.values(); for(Apple a : allapples) System.out.println(a); System.out.println(); // применение valueOf() ap = Apple.valueOf("Winesap"); System.out.println("ар содержит " + ap) ; } }
Вывод этой программы таков:
Константы Apple:
Jonathan
GoldenDel
RedDel
Winesap
Cortland
ap содержит Winesap
Обратите внимание на то, что программа использует стиль “for-each” цикла for для перебора массива констант, возвращенных методом values().
В целях демонстрации создается переменная allapples, которой присваивается ссылка на массив перечислимых значений. Но это не обязательно, поскольку цикл for можно написать, как показано ниже, избежав применения переменной allapples:
for(Apple a : Apple.values()) System.out.println(a);
Обратите также внимание на то, как значение, соответствующее имени
Winesapp, получается вызовом метода valueOf():
ар = Apple.valueOf("Winesap");
Как объяснялось ранее, метод valueOf() возвращает перечислимое значение, ассоциированное с именем константы, переданным в строке.