Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
Приведенные выше примеры демонстрируют создание и использование перечислений, но они не дают полного представления обо всех их возможностях. В отличие от других языков программирования перечисления в Java реализованы как типы классов. И хотя создать экземпляр объекта типа enum с помощью оператора new нельзя, во всем остальном перечисления ничем не отличаются от классов. Такой способ реализации перечислений наделяет их богатыми возможностями, принципиально недостижимыми в других языках. Это, в частности, позволяет определять конструкторы перечислений, добавлять в них переменные экземпляра, методы и даже создавать перечисления, реализующие интерфейсы.
Методы values () и vaJueOf ()
У всех перечислений имеются два предопределенных метода: values () и valueOf ().
Ниже приведены общие формы их объявления.
public static перечислимый_тип[] values()
public static перечислимый_тип valueOf(String str)
Метод values () возвращает массив, содержащий константы перечислимого типа, а метод valueOf () — константу того же типа, значение которой соответствует символьной строке str, передаваемой этому методу в качестве параметра. В обоих чаях перечислимый_тип обозначает тип используемого перечисления. Так, если воспользоваться рассмотренным выше перечислением Transport, то при вызове метода Transport .valueOf ("TRAIN") будет возвращено значение TRAIN типа Transport. Ниже приведен пример программы, демонстрирующий применение методов values () и valueOf().
// Применение встроенных в перечисление методов.
// Перечисление разных видов транспорта,
enum Transport {
CAR, TRUCK, AIRPLANE, TRAIN, BOAT
}
class EnumDemo2 {
public static void main(String args[])
{
Transport tp;
System.out.println("Here are all Transport constants");
// воспользоваться методом values()
// Получение массива констант типа Transport.
Transport allTransports[] = Transport.values();
for(Transport t : allTransports)
System.out.println(t);
System.out.println();
// воспользоваться методом valueOf()
// Получение константы под названием AIRPLANE.
tp = Transport.valueOf("AIRPLANE");
System.out.println("tp contains " + tp);
}
}
Выполнение этой программы дает следующий результат:
Here are all Transport constants
CAR
TRUCK
AIRPLANE
TRAIN
BOAT
tp contains AIRPLANE
Обратите внимание на то, что в данном примере программы для перебора массива констант, полученного с помощью метода values (), используется вариант for-each цикла for. Ради большей наглядности данного примера в его коде создается переменная allTransports, которой присваивается ссылка на массив констант перечислимого типа. Но делать это совсем не обязательно, а цикл for можно написать так, как показано ниже. В этом случае необходимость в дополнительной переменной allTransports отпадает.
for(Transport t : Transport.values ())
System.out.println(t);
Обратите также внимание на то, что значение, соответствующее имени AIRPLANE, было получено в результате вызова метода valueOf ():
tp = Transport.valueOf("AIRPLANE");
Как пояснялось выше, метод valueOf () возвращает значение перечислимого типа, связанное с именем константы, которое передается в виде символьной строки при вызове этого метода.
Конструкторы, методы, переменные экземпляра и перечисления