Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Перечисления (Enums) в Java: полное руководство по enum и enum-классам

Перечисления (Enums) в Java

В этом руководстве мы изучим перечисления в Java. Научимся создавать и использовать enums и enum-классы с помощью примеров.

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

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }

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

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

Примечание: Константы перечисления обычно записываются заглавными буквами.

Пример 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); } }

Вывод:

 SMALL MEDIUM

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

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

 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(); } }

Вывод:

 I ordered a medium size pizza.

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

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

Обратите внимание на оператор,

 Test t1 = new Test(Size.MEDIUM);

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

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


Enum-класс в Java

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

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

 enum Size { constant1, constant2, …, constantN; // методы и поля }

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


Пример 3: Java Enum-класс

 enum Size{ SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() { // this будет ссылаться на объект 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) { // вызов getSize() // используя объект SMALL System.out.println("The size of the pizza is " + Size.SMALL.getSize()); } }

Вывод:

 The size of the pizza is small

В приведенном выше примере мы создали enum-класс Size. У него четыре константы SMALL, MEDIUM, LARGE и EXTRALARGE.

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

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

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

Методы Java Enum-класса

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

1. Java Enum ordinal()

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

 ordinal(SMALL) // возвращает 0

2. Enum compareTo()

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

 Size.SMALL.compareTo(Size.MEDIUM) // возвращает ordinal(SMALL) - ordinal(MEDIUM)

3. Enum toString()

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

 SMALL.toString() // возвращает "SMALL"

4. Enum name()

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

 name(SMALL) // возвращает "SMALL"

5. Java Enum valueOf()

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

 Size.valueOf("SMALL") // возвращает константу SMALL.

6. Enum values()

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

 Size[] enumArray = Size.values();

Зачем Java Enums?

В Java enum был введен, чтобы заменить использование int-констант.

Предположим, мы использовали коллекцию констант int.

 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; }

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

Поэтому вместо использования int-констант мы можем просто использовать enums. Например,

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }

Это делает наш код более интуитивным.

Также enum обеспечивает безопасность типов во время компиляции.

Если мы объявляем переменную типа Size. Например,

 Size size;

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

java

  1. Перечисления в C: определение, объявление и операции с флагами
  2. Освоение операторов Java: типы, синтаксис и практические примеры
  3. Комментарии в Java: типы, использование и лучшие практики
  4. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  5. Освоение строк в Java: создание, методы и лучшие практики
  6. Интерфейсы в Java: концепции, реализация и лучшие практики
  7. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  8. Перечисления (Enums) в Java: полное руководство по enum и enum-классам
  9. Конструкторы в Java Enums: объяснение с практическим примером
  10. Строковые представления в Java Enums: настройка toString() и лучшие практики