Java Урок 51: ПЕРЕЧИСЛЕНИЯ, ordinal()

Перечисления наследуются от класса Enum.
Хотя вы не можете наследовать суперкласс при объявлении перечисления,
все перечисления автоматически наследуют класс java.lang.Enum.
Этот класс определяет несколько методов, доступных к использованию всеми перечислениями.

Скачать исходники для статьи можно ниже

Вы можете получить значение, которое указывает позицию константы в списке констант перечисления. Это называется порядковым значением (ordinal value), которое извлекается с помощью вызова метода ordinal(), показанного ниже.

final int ordinal()

Этот метод возвращает порядковое значение вызывающей константы.
Порядковые значения начинаются с нуля. То есть в перечислении Apple константа Johnatan имеет порядковое значение 0, константа GoldenDel — 1, константа RedDel — 2 и т.д.

Вы можете сравнить порядковые значения двух констант одного и того же
перечисления с помощью метода соmрагеТо(). Он имеет следующую общую форму:

final int соmрагеТо(тип_перечисления е)

Здесь тип_перечисления — тип перечисления, а е — константа, которую нужно сравнить с вызывающей константой. Помните, что вызывающая константа и е должны относиться к одному перечислению.
Если вызывающая константа имеет порядковое значение меньше чем е, то метод соmрагеТо() возвращает отрицательное значение.
Если два порядковых значения одинаковы, возвращается нуль.
Если вызывающая константа имеет порядковое значение больше чем е, то
возвращается положительное значение.

Вы можете сравнить на эквивалентность перечислимую константу с любым другим объектом, используя метод equals() — переопределенный метод equals() класса Object.
Хотя метод equals() может сравнивать перечислимые константы с
любым другим объектом, эти два объекта будут эквивалентны только в случае, если оба являются ссылкой на одну и ту же константу из одного и того же перечисления. Простое совпадение порядковых значений не заставит метод equals() вернуть значение true, если две константы принадлежат разным перечислениям.
Помните, что вы можете сравнивать две ссылки перечислений на эквивалентность, используя оператор ==.

В следующей программе демонстрируется применение методов ordinal(),
соmрагеТо() и equals():

// Демонстрация ordinal() , соmрагеТо() и equals().
// Перечисление сортов яблок,
enum Apple {
   Jonathan, GoldenDel, RedDel, Winesap, Cortland
}
class EnumDemo4 {
   public static void main(String args[]){
      Apple ар, ap2, ap3;
      // Получить все порядковые значения с помощью ordinal().
      System.out.println("Вот все константы " + " и их порядковые значения: ");
      for(Apple а : Apple.values()){
         System.out.println(а + " " + a.ordinal());
      }
      ap = Apple.RedDel;
      ap2 = Apple.GoldenDel;
      ap3 = Apple.RedDel;
      System.out.println();
      // Демонстрация compareTo() и equals()
      if(ap.compareTo(ap2) < 0)
      System.out.println(ap + " идет перед " + ap2) ;
      if(ap.compareTo(ap2) > 0)
      System.out.println(ap2 + " идет перед " + ap) ;
      if(ap.compareTo(арЗ) == 0)
      System.out.println(ap + " эквивалентно " + арЗ);
      System.out.println();
      if(ap.equals(ap2))
      System.out.println("Error!");
      if(ap.equals(арЗ))
      System.out.println(ap + " equals " + арЗ);
      if(ap == арЗ)
      System.out.println(ap + " == " + арЗ);
   }
}

Ниже показан вывод этой программы:
Вот все константы и их порядковые значения:
Jonathan 0
GoldenDel 1
RedDel 2
Winesap 3
Cortland 4
GoldenDel идет перед RedDel
RedDel эквивалентно RedDel
RedDel эквивалентно RedDel
RedDel == RedDel

Введите свой email адрес для того, чтобы подписаться на мой блог:


knopkisoc

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *