Во все перечислимые типы автоматически включены два предопределенных метода: values () и vaiueOf(). Их синтаксическая запись приведена в следующих строках.
public static enum-tуре[] values()
public static enum-type valueOf(String str)
Метод values() возвращает массив, который содержит список констант перечислимого типа. Метод vaiueOf() возвращает перечислимую константу, значение которой соответствует содержимому строки, передаваемой в параметре str. В обоих случаях enum-type — перечислимый тип. В программе листинга 6.2 демонстрируется применение методов values() и valueOf().
Листинг 6.2. Применение встроенных методов перечислимого типа
enum Apple {
Jonathan, GoldenDel, RedDel, Winsap, Cortland
}
class EnumDemo2 {
public static void main(String args[])
{
Apple ap;
System.out.println("Here are all Apple constants");
// use values()
Apple allapples[] = Apple.values();
for(Apple a : allapples)
System.out.println(a);
System.out.println();
// use valueOf()
ap = Apple.valueOf("Winsap");
System.out.println("ap contains " + ap);
}
}
Далее приведен вывод результатов программы из листинга 6.2:
Here are all Apple constants
Jonathan
GoldenDel
RedDel
Winesap
Cortland
ap contains Winesap
Обратите внимание, в программе из листинга 6.2 используется цикл for в стиле for-each для обработки массива констант, полученного из метода values(). Для большей иллюстративности создана переменная allapples и ей присвоена ссылка на массив констант перечислимого типа. Но этот шаг необязателен, так как цикл for можно записать так, как показано в следующем фрагменте, и исключить необходимость применения переменной allapples:
for(Apple a ; Apple, values())
System.out.println(a);
Теперь посмотрим, как значение, соответствующее имени Winesap, получается с помощью вызова метода valueOf ().
ар = Apple.valueOf("Winsap");
Как уже объяснялось, метод valueOf() возвращает значение, связанное с именем константы, представленной в виде строки.
Замечание.
Как могут отметить программисты, пишущие на C/C++, в языке Java гораздо легче, чем в других языках, выполнять переходы между понятной человеку формой представления константы перечислимого типа и ее бинарной формой представления. Это существенное преимущество реализации перечислимого типа, принятой в языке Java.
|