Перечисления автоматически включают два предопределенных метода: 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() возвращает перечислимое значение, ассоциированное с именем константы, переданным в строке.


