The Enum на Java це тип даних, який містить фіксований набір констант.
Його можна використовувати для днів тижня (НЕДІЛЯ, ПОНЕДІЛОК, ВІВТОРОК, СЕРЕДА, ЧЕТВЕР, П’ЯТНИЦЯ та СУБОТА), напрямків (ПІВНІЧ, ПІВДЕНЬ, СХІД та ЗАХІД), пори року (ВЕСНА, ЛІТО, ЗИМА та ОСІНЬ або ОСІНЬ) ), кольори (ЧЕРВОНИЙ, ЖОВТИЙ, СИНІЙ, ЗЕЛЕНИЙ, БІЛИЙ і ЧОРНИЙ) тощо. Згідно з правилами іменування Java, ми повинні мати всі константи великими літерами. Отже, ми маємо константи enum великими літерами.
Java Enum можна розглядати як класи, які мають фіксований набір констант (змінна, яка не змінюється). Константи переліку Java є статичними та остаточними неявно. Він доступний з JDK 1.5.
c форматований рядок
Переліки використовуються для створення наших власних типів даних, таких як класи. The перелік тип даних (також відомий як Enumerated Data Type) використовується для визначення переліку в Java. На відміну від C/C++, enum у Java — це більше потужний . Тут ми можемо визначити перелік або всередині класу, або поза ним.
Java Enum внутрішньо успадковує Клас Enum , тому він не може успадкувати будь-який інший клас, але може реалізувати багато інтерфейсів. Ми можемо мати поля, конструктори, методи та основні методи в Java enum.
Важливі моменти для Java Enum
- Enum покращує безпеку типів
- Enum можна легко використовувати в комутаторі
- Enum можна обійти
- Enum може мати поля, конструктори та методи
- Enum може реалізувати багато інтерфейсів, але не може розширити жоден клас, оскільки він внутрішньо розширює клас Enum
Простий приклад Java Enum
class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }}Перевірте зараз
Вихід:
WINTER SPRING SUMMER FALL
Давайте подивимося інший приклад переліку Java, де ми використовуємо методи value(), valueOf() і ordinal() переліку Java.
class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }}
Вихід:
WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2
Примітка. Компілятор Java внутрішньо додає методи values(), valueOf() і ordinal() до переліку під час компіляції. Він внутрішньо створює статичний і кінцевий клас для enum.
Яке призначення методу values() у enum?
Компілятор Java внутрішньо додає метод values(), коли створює enum. Метод values() повертає масив, що містить усі значення переліку.
Яке призначення методу valueOf() у переліку?
Компілятор Java внутрішньо додає метод valueOf(), коли створює перелік. Метод valueOf() повертає значення заданої константи enum.
Яке призначення методу ordinal() у переліку?
Компілятор Java внутрішньо додає метод ordinal() під час створення enum. Метод ordinal() повертає індекс значення enum.
алфавіт у цифрах
Визначення Java Enum
Перелік може бути визначений у класі або поза ним, оскільки він схожий на клас. Крапка з комою (;) у кінці констант переліку необов’язкова. Наприклад:
enum Season { WINTER, SPRING, SUMMER, FALL }
Або
enum Season { WINTER, SPRING, SUMMER, FALL; }
Обидва визначення Java enum однакові.
Приклад Java Enum: визначено поза класом
enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }}Перевірте зараз
Вихід:
WINTER
Приклад Java Enum: визначено всередині класу
class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }}Перевірте зараз
Вихід:
альфа-бета обрізка
WINTER
Приклад Java Enum: основний метод в Enum
Якщо ви розмістите метод main() всередині enum, ви зможете запустити enum безпосередньо.
enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } }
Вихід:
WINTER
Ініціалізація певних значень констант переліку
Константи enum мають початкове значення, яке починається з 0, 1, 2, 3 і так далі. Але ми можемо ініціалізувати конкретне значення для констант enum, визначивши поля та конструктори. Як зазначено раніше, Enum може мати поля, конструктори та методи.
Приклад визначення початкового значення для констант переліку
class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }}Перевірте зараз
Вихід:
WINTER 5 SPRING 10 SUMMER 15 FALL 20
Конструктор типу enum є закритим. Якщо ви не оголошуєте приватний компілятор, внутрішньо створюється приватний конструктор.
enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } }
Внутрішній код, створений компілятором для наведеного вище прикладу типу enum
final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } }
Чи можемо ми створити екземпляр Enum за новим ключовим словом?
Ні, тому що він містить лише приватні конструктори. |
Чи можемо ми мати абстрактний метод в Enum?
Так, звісно! ми можемо мати абстрактні методи і можемо забезпечити реалізацію цих методів.
Java Enum в операторі switch
Ми можемо застосувати enum до оператора switch, як у наведеному прикладі:
Приклад застосування Enum до оператора switch
class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }}Перевірте зараз
Вихід:
monday