Изменения

Перейти к: навигация, поиск

Перечисления

1697 байт добавлено, 16:45, 19 июня 2013
Нет описания правки
==Введение ==
В <tex>Java</tex>, начиная с версии 1.5, помимо всего прочего появились так называемые перечисления <tex>(enum)</tex>. Существует целый ряд плюсов от использования перечислений против именованных констант:
Компилятор гарантирует корректную проверку типов
Удобство итерации по всем возможным значениям перечисления
Они занимают меньше места в <tex>switch-</tex>блоке (не нужно указывать имя класса)
и т.д.
 
Однако по сравнению, допустим, с <tex>C++</tex>, перечисления в <tex>Java</tex> представляют собой полноценные объекты, что предоставляет разработчику гораздо большую гибкость.
Во-первых, все перечисления наследуются от класса <tex>java.lang.Enum</tex>, у которого есть ряд удобных методов, а именно:
<tex>— name()</tex> — имя константы в виде строки
 
<tex>— ordinal()</tex> — порядок константы (соответствует порядку, в котором объявлены константы)
 
<tex>— valueOf()</tex> — статический метод, позволяющий получить объект перечисления по классу и имени
 
Далее, как уже было озвучено, у класса перечисления есть возможность получить все возможные значения перечисления путем вызова метода <tex>java.lang.Class.getEnumConstants()</tex> у класса перечисления
В классе перечисления имеется возможность задавать конструкторы (только приватные), поля и методы
Перечисления могут реализовывать любые интерфейсы
При этом методы в перечислении могут быть абстрактными, а конкретные экземпляры констант могут определять такие методы (как, впрочем, и переопределять уже определенные)
== Пример ==
Раньше класс бинарные операции мы делали вот так
}
abstract public int calculate(int a, int b);
Перечисление может иметь :закрытые конструкторы, поля, методы, абстрактные методы(если они определены в каждом экземпляре). Перечисление может реализовывать интерфейсыТакже возможно создавать переменные(а не классы). public int Operation { BinaryOperation t; int x, y; return t.calculate(x,y); }Таким образом можно обращаться к перечислению == Методы работы с перечислениями ==Класс <tex>Enum –</tex> базовый для перечислений <tex>name() –</tex> имя <tex>ordinal()</tex> – номер <tex>valueOf(Class, name) –</tex> экземпляр по номеру
668
правок

Навигация