При определении типа перечисления вы по существу определяете класс, но многие детали заполняются компилятором для вас, поэтому в некоторой степени роль ключевого слова Enum похожа на класс или интерфейс.
Когда вы определяете тип перечисления, используя «enum», типы, которые вы определяете, по существу унаследованы от класса java.lang.enum, а член каждого перечисления на самом деле является экземпляром энмима, который вы определяете. Все они не выполнены в финале, поэтому вы не можете их изменить, они также являются статичными участниками, поэтому вы можете использовать их непосредственно через название типа, и, конечно, самое главное, все они являются публичными.
Например:
Opconstants.javapublic enum opconstants {turn_left, turn_right, стрельба} В этом примере Opconstants наследуется от java.lang.enum. Каждый член Enum, такой как Turn_Left, Turn_Right, стрельба. Все они являются предметами экземпляров Opconstants, то есть экземпляров объектов. Есть естественно некоторые методы выше. Например, метод ToString () перезаписан, что позволяет напрямую получать строку описания значения перечисления. Метод значений (), определенный объектом Enum, позволяет получить все экземпляры перечисления и передавать их обратно в массив. Вы используете эти два метода, чтобы просто отображать содержание Opconstants:
Showenum.javapublic class showenum {public static void main (string [] args) {for (opconstants constant: opconstants.values ()) {System.out.println (constant.toString ()); }}} По сути, println () автоматически вызовет toString (), поэтому на самом деле можно писать toString (). Результат выполнения следующим образом:
Turn_leftturn_rightshoot
Вы можете использовать метод "==" или equals () для сравнения объектов Enum. «" == "" будет сравнивать, являются ли объекты Enum, которые вы предоставляете, одинаковыми (то есть занявшим одно и то же местоположение памяти), в то время как Equals () по существу сравнит содержимое двух объектов Enum. По умолчанию он будет сравниваться на основе строкового значения enum.
Метод ValueOf () позволяет вам попытаться преобразовать указанную строку в экземпляр Enum. Вы можете использовать метод сравнения (), который может сравнить порядок двух объектов перечисления при перечислении. Вот пример
Showenum.javapublic class showenum {public static void main (string [] args) {enumcompareto (opconstants.valueof (args [0])); } public static void enumMpareto (opconstants constant) {System.out.println (constant); для (opconstants c: opconstants.values ()) {System.out.println (constant.compareto (c)); }}} Результаты исполнения:
$ java shayenum turn_light
Turn_right10-1
Переверните положительное значение, указывая на то, что порядок находится до сравнения объекта Enum, после того, как отрицательное значение будет указано, и 0 означает, что позиции двух взаимно сравнительных значений Enum одинаковы.
Для каждого члена перечисления мы можем использовать метод ordinal () для получения индекса позиции в порядке перечисления, а по умолчанию начинается с 0, например:
Showenum.javapublic class showenum {public static void main (string [] args) {for (opconstants c: opconstants.values ()) {system.out.printf ("%d%s%n", c.ordinal (), c); }}} Результаты исполнения:
0 Turn_Left1 Turn_Right2 Съемка
Ключевое слово enum можно использовать для определения класса Enum, а соответствующие константы могут быть записаны в классе. Давайте посмотрим на пример ниже.
Следующий код:
Class TestClass {private testClass () {} // Определить частный конструктор и не может создать создание объекта из внешнего // предоставить два экземпляра A и B Public Static Final TestClass a = new TestClass (); Public Static Final TestClass B = New TestClass ();}Вместо этого вы можете использовать типы перечисления:
enum testclass01 {a, b;}Использование:
Enum также может иметь конструкторы, поля и методы:
enum testclass02 {a ("a") // При создании объекта пропустите параметры конструктора, b ("b"); частное строковое значение; private testclass02 (строка значения) {this.value = value; } public String getValue () {return this.value; }}Перечисления также могут иметь абстрактные методы:
enum testclass03 {a () {// реализовать абстрактный метод public void type () {System.out.println ("Превосходный"); }}, B () {public void type () {System.out.println ("good"); }}; Public Abstract void Type (); // Определить метод абстрактногоМетод испытаний:
public class test02 {public static void main (string [] args) {print (testclass02.a); // пауза в параметрах enum} public static void print (testclass02 t) {System.out.println (t.getValue ()); } enum testClass02 {a ("a"), b ("b"); частное строковое значение; private testclass02 (строка значения) {this.value = value; } public String getValue () {return this.value; }}}Результаты работы:
Aauthor: Start Sign: Пока вы все еще пытаетесь, это не неудача.