logo

enum на Java

У Java, Перерахування або Java Enum служать для представлення групи іменованих констант мовою програмування. Java Enum використовуються, коли ми знаємо всі можливі значення під час компіляції, такі як вибір у меню, режими округлення, прапорці командного рядка тощо. Набір констант у типі enum не обов’язково повинен залишатися постійним назавжди.

Що таке Enumeration або Enum в Java?

Перерахування Java є типом класу. Хоча нам не потрібно створювати екземпляр enum за допомогою новий, він має ті ж можливості, що й інші класи. Цей факт робить перерахування Java дуже потужним інструментом. Як і класам, ви можете надавати їм конструктори, додавати змінні екземплярів і методи і навіть реалізовувати інтерфейси.



Приклад Enum:

4 масті в колоді гральних карт можуть бути 4 нумераторами під назвами Трефа, Бубна, Черва та Піка, які належать до нумерованого типу під назвою Масті. Інші приклади включають природні перераховані типи (наприклад, планети, дні тижня, кольори, напрямки тощо).

Слід пам’ятати, що, на відміну від класів, перерахування не успадковують інші класи і не можуть бути розширені (тобто стати суперкласом). Ми також можемо додавати до нього змінні, методи та конструктори. Основна мета переліку — визначити наші власні типи даних (перераховані типи даних).

Оголошення enum в Java

Оголошення Enum можна зробити поза класом або всередині класу, але не всередині методу.



1. Оголошення поза класом

Java






// A simple enum example where enum is declared> // outside any class (Note enum keyword instead of> // class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }>

>

>

Вихід

RED>

2. Оголошення всередині класу

Java


sql порядок у випадковому порядку



// enum declaration inside a class.> public> class> Test {> >enum> Color {> >RED,> >GREEN,> >BLUE;> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }>

>

>

Вихід

RED>
  • Перший рядок всередині переліку повинен містити список констант, а потім інші речі, такі як методи, змінні та конструктори.
  • Відповідно до Правила іменування Java , рекомендується називати константу тільки великими літерами

Властивості Enum в Java

Є певні властивості, за якими слід Enum, як зазначено нижче:

  • Кожен перелік внутрішньо реалізується за допомогою класу.
  • Кожна константа перерахування представляє an об'єкт типу enum.
  • Тип Enum можна передати як аргумент перемикач заяви.
  • Кожна константа перерахування завжди є неявною публічний статичний фінал . Оскільки це так статичний , ми можемо отримати доступ до нього за допомогою переліку Name. Оскільки це так остаточний , ми не можемо створити дочірні переліки.
  • Ми можемо оголосити метод main(). всередині enum. Отже, ми можемо викликати enum безпосередньо з командного рядка.

Нижче наведено реалізацію наведених вище властивостей:

Java




// A Java program to demonstrate working on enum> // in switch case (Filename Test. Java)> import> java.util.Scanner;> // An Enum class> enum> Day {> >SUNDAY,> >MONDAY,> >TUESDAY,> >WEDNESDAY,> >THURSDAY,> >FRIDAY,> >SATURDAY;> }> // Driver class that contains an object of 'day' and> // main().> public> class> Test {> >Day day;> >// Constructor> >public> Test(Day day) {>this>.day = day; }> >// Prints a line about Day using switch> >public> void> dayIsLike()> >{> >switch> (day) {> >case> MONDAY:> >System.out.println(>'Mondays are bad.'>);> >break>;> >case> FRIDAY:> >System.out.println(>'Fridays are better.'>);> >break>;> >case> SATURDAY:> >case> SUNDAY:> >System.out.println(>'Weekends are best.'>);> >break>;> >default>:> >System.out.println(>'Midweek days are so-so.'>);> >break>;> >}> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >String str =>'MONDAY'>;> >Test t1 =>new> Test(Day.valueOf(str));> >t1.dayIsLike();> >}> }>

>

>

ряд фібоначчі в java
Вихід

Mondays are bad.>

Програми Java Enum

1. Основна функція всередині Enum

Ми можемо оголосити функцію main всередині enum, оскільки ми можемо викликати enum безпосередньо з командного рядка.

Нижче наведено реалізацію вищезазначеної властивості:

Java




// A Java program to demonstrate that we can have> // main() inside enum class.> enum> Color {> >RED,> >GREEN,> >BLUE;> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }>

>

>

Вихід

RED>

2. Перейдіть до Enum

Ми можемо перебирати Enum за допомогою values() і циклу. Функція values() повертає масив значень Enum як константи, використовуючи які ми можемо перебирати значення.

Нижче наведено реалізацію циклу через Enum:

Java




// Java Program to Print all the values> // inside the enum using for loop> import> java.io.*;> // Enum Declared> enum> Color {> >RED,> >GREEN,> >BLUE;> }> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Iterating over all the values in> >// enum using for loop> >for> (Color var_1 : Color.values()) {> >System.out.println(var_1);> >}> >}> }>

>

>

Вихід

алфавіт до числа
RED GREEN BLUE>

3. Enum у операторі Switch

Java




// Java Program to implement> // Enum in a Switch Statement> import> java.io.*;> // Driver Class> class> GFG {> >// Enum Declared> >enum> Color {> >RED,> >GREEN,> >BLUE,> >Yellow;> >}> >// Main Function> >public> static> void> main(String[] args)> >{> >Color var_1=Color.Yellow;> > >// Switch case with Enum> >switch>(var_1){> >case> RED:> >System.out.println(>'Red color observed'>);> >break>;> >case> GREEN:> >System.out.println(>'Green color observed'>);> >break>;> >case> BLUE:> >System.out.println(>'Blue color observed'>);> >default>:> >System.out.println(>'Other color observed'>);> >}> >}> }>

>

>

Вихід

Other color observed>

Enum і спадкування

  • Усі переліки неявно розширюються java.lang.Enum клас . Як клас може тільки розширюватися один parent у Java, enum не може розширювати нічого іншого.
  • метод toString(). перевизначається в java.lang.Enum клас , який повертає назву константи enum.
  • enum може реалізувати багато інтерфейсів.

Enum і конструктор

  • Enum може містити конструктор, і він виконується окремо для кожної константи enum під час завантаження класу enum.
  • Ми не можемо створити об’єкти enum явно, а отже, ми не можемо викликати конструктор enum безпосередньо.

Enum і методи

Enum може містити обидва бетон методи і анотація методи. Якщо клас enum має абстрактний метод, то кожен екземпляр класу enum повинен його реалізувати.

Java




// Java program to demonstrate that enums can have> // constructor and concrete methods.> // An enum (Note enum keyword inplace of class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> >// enum constructor called separately for each> >// constant> >private> Color()> >{> >System.out.println(>'Constructor called for : '> >+>this>.toString());> >}> >public> void> colorInfo()> >{> >System.out.println(>'Universal Color'>);> >}> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >c1.colorInfo();> >}> }>

>

>

Вихід

Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>

Поширені запитання щодо Enum у Java

Q1. Чи можемо ми створити екземпляр Enum за ключовим словом new?

років:

Ні, ми не можемо створити екземпляр ключового слова Enum, оскільки воно містить лише приватні конструктори.

Q2. Чи можемо ми мати абстрактний метод в Enum?

років:

Так, у нас є абстрактний метод в Enum.

Q3. Яке призначення методу values() у enum?

років:

У Java метод values() можна використовувати для повернення всіх значень, присутніх у переліку.

Q4. Яке призначення методу valueOf() у переліку?

років:

Метод valueOf() повертає константу enum указаного значення рядка, якщо вона існує.

Q5. Яке призначення методу ordinal() у переліку?

років:

За допомогою методу ordinal() можна знайти кожен постійний індекс enum, як і індекс масиву.

Q6. Напишіть програму на Java, щоб описати використання методів values(), valueOf() і ordinal() у переліку.

років:

Java




// Java program to demonstrate working of values(),> // ordinal() and valueOf()> enum> Color {> >RED,> >GREEN,> >BLUE;> }> public> class> Test {> >public> static> void> main(String[] args)> >{> >// Calling values()> >Color arr[] = Color.values();> >// enum with loop> >for> (Color col : arr) {> >// Calling ordinal() to find index> >// of color.> >System.out.println(col +>' at index '> >+ col.ordinal());> >}> >// Using valueOf(). Returns an object of> >// Color with given constant.> >// Uncommenting second line causes exception> >// IllegalArgumentException> >System.out.println(Color.valueOf(>'RED'>));> >// System.out.println(Color.valueOf('WHITE'));> >}> }>

>

фрагмент масиву Java

>

Вихід

RED at index 0 GREEN at index 1 BLUE at index 2 RED>

Наступна стаття про enum: Enum із налаштованим значенням у Java