Java enum & enum Class (с примерами)

В этом руководстве мы узнаем о перечислениях в Java. Мы научимся создавать и использовать перечисления и классы перечислений с помощью примеров.

В Java перечисление (сокращение от enumeration) - это тип, который имеет фиксированный набор постоянных значений. Мы используем enumключевое слово для объявления перечислений. Например,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Здесь мы создали перечисление с именем Size. Он содержит фиксированные значения SMALL, MEDIUM, LARGE и EXTRALARGE.

Эти значения внутри фигурных скобок называются константами (значениями) перечисления.

Примечание: Константы перечисления обычно представлены в верхнем регистре.

Пример 1: Java Enum

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Main ( public static void main(String() args) ( System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); ) )

Вывод

 МАЛЫЙ СРЕДНИЙ

Как видно из приведенного выше примера, мы используем имя перечисления для доступа к постоянным значениям.

Также мы можем создавать переменные перечислимого типа. Например,

 Size pizzaSize;

Здесь pizzaSize - это переменная типа Size. Ему можно присвоить только 4 значения.

 pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;

Пример 2: Java Enum с оператором switch

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Test ( Size pizzaSize; public Test(Size pizzaSize) ( this.pizzaSize = pizzaSize; ) public void orderPizza() ( switch(pizzaSize) ( case SMALL: System.out.println("I ordered a small size pizza."); break; case MEDIUM: System.out.println("I ordered a medium size pizza."); break; default: System.out.println("I don't know which one to order."); break; ) ) ) class Main ( public static void main(String() args) ( Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); ) )

Вывод

 Я заказал пиццу среднего размера.

В приведенной выше программе мы создали перечисляемый тип Size. Затем мы объявили переменную pizzaSize типа Size.

Здесь переменной pizzaSize можно присвоить только 4 значения (SMALL, MEDIUM, LARGE, EXTRALARGE).

Обратите внимание на заявление,

 Test t1 = new Test(Size.MEDIUM);

Он вызовет Test()конструктор внутри класса Test. Теперь переменной pizzaSize присвоена константа MEDIUM.

На основе значения выполняется один из вариантов оператора switch case.

Класс Enum в Java

В Java типы перечислений считаются особым типом класса. Он был представлен с выпуском Java 5.

Класс перечисления может включать методы и поля, как и обычные классы.

 enum Size ( constant1, constant2,… , constantN; // methods and fields )

Когда мы создаем класс перечисления, компилятор будет создавать экземпляры (объекты) каждой константы перечисления. Кроме того, все константы перечисления всегда public static finalпо умолчанию.

Пример 3: Java Enum Class

 enum Size( SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() ( // this will refer to the object SMALL switch(this) ( case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; ) ) public static void main(String() args) ( // call getSize() // using the object SMALL System.out.println("The size of the pizza is " + Size.SMALL.getSize()); ) )

Вывод

 Размер пиццы небольшой

В приведенном выше примере мы создали перечисляемый класс Size. Он имеет четыре константы: МАЛЕНЬКИЙ, СРЕДНИЙ, БОЛЬШОЙ и ЭКСТРАЛЬНЫЙ.

Поскольку Size является классом перечисления, компилятор автоматически создает экземпляры для каждой константы перечисления.

Здесь внутри main()метода мы использовали экземпляр SMALL для вызова getSize()метода.

Примечание . Как и обычные классы, перечисляемый класс также может включать конструкторы. Чтобы узнать об этом больше, посетите конструктор перечисления Java.

Методы Java Enum Class

В классах перечисления есть несколько предопределенных методов, которые легко доступны для использования.

1. Порядковый номер Java Enum ()

ordinal()Метод возвращает позицию константы перечисления. Например,

 ordinal(SMALL) // returns 0

2. Enum compareTo ()

compareTo()Метод сравнивает константы перечислений , основанные на их порядковом значении. Например,

 Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)

3. Enum toString ()

toString()Метод возвращает строковое представление констант перечислений. Например,

 SMALL.toString() // returns "SMALL"

4. Имя перечисления ()

name()Метод возвращает определенное имя константы перечисления в виде строки. Возвращаемое значение из name()метода final. Например,

 name(SMALL) // returns "SMALL"

5. Java Enum valueOf ()

The valueOf() method takes a string and returns an enum constant having the same string name. For example,

 Size.valueOf("SMALL") // returns constant SMALL.

6. Enum values()

The values() method returns an array of enum type containing all the enum constants. For example,

 Size() enumArray = Size.value();

Why Java Enums?

In Java, enum was introduced to replace the use of int constants.

Suppose we have used a collection of int constants.

 class Size ( public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; )

Here, the problem arises if we print the constants. It is because only the number is printed which might not be helpful.

So, instead of using int constants, we can simply use enums. For example,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

This makes our code more intuitive.

Also, enum provides compile-time type safety.

If we declare a variable of the Size type. For example,

 Size size;

Здесь гарантируется, что переменная будет содержать одно из четырех значений. Теперь, если мы попытаемся передать значения, отличные от этих четырех значений, компилятор выдаст ошибку.

Интересные статьи...