java enum java enumeration tutorial with examples
Цей підручник детально розгляне клас та конструктор Java Enum. Ми дізнаємось, як використовувати Enum, на різних прикладах програмування Java:
Це спеціальний клас, пояснення якого буде надано детально. Дається розуміння класу Java Enum разом зі списком методів, які він підтримує.
Достатня кількість програм, що реалізують концепції переліку Java, та деякі запитання, які можна задати під час співбесід, включені до цього посібника для Вашого легкого розуміння.
=> Перегляньте тут, щоб побачити навчальну серію Java для всіх.
Що ви дізнаєтесь:
Перерахування Java
Перерахування Java - це не що інше, як перелік змінних, методів або конструкторів екземплярів. Це група констант. Поняття переліку було введено в JDK5. Властивість за замовчуванням для кожної константи перерахування є відкритою, статичною та остаточною.
enum Ключове слово
Перерахування створюється за допомогою ключового слова під назвою “ перерахування '.
Нижче наведено синтаксис, за допомогою якого ми можемо створити перелік.
Синтаксис:
перерахувати перерахований_тип_назви
{
перечислювач1, перечислювач2,… перечислювачN;
}
Примітка: enum може бути визначений лише всередині класу або інтерфейсу верхнього рівня або в статичному контексті. Це не повинно бути всередині методу.
Приклад переліку
У цьому прикладі ми збираємося ініціалізувати чотири перелічувачі, тобто лопату, серце, діамант і клуб, що належать до переліченого типу, що називається картками.
Потім ми спробуємо роздрукувати кожен із цих перелічувачів.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1,a2,a3,a4 respectively. * note that the new keyword was not used here */ cards a1 = cards.spade; cards a2 = cards.club; cards a3 = cards.heart; cards a4 = cards.diamond; System.out.println('Enumerators are: '+ a1 + ',' + a2 + ',' + a3 + ',' + a4); } }
Вихід:
Клас Enum
Одне, що ви, напевно, помітили у наведеному вище прикладі (див. Коментарі) - це те, що ми не використовували a “Нове ключове слово” під час створення екземпляра. Хоча перелічення визначають клас Enum і конструктори, вони не використовують нове ключове слово.
Ми можемо використовувати перечислювачі, визначені так само, як і примітив. Enum - це загальний клас, і всі перелічення успадковують Enum.
Синтаксис:
// E - тип перерахування.
клас Enum
Як використовувати Enum в Java
Давайте подивимося, як використовувати Enum у різних сценаріях за допомогою прикладів Java:
Всередині класу
Enum може бути оголошений всередині або зовні (приклад ключового слова enum) класу, але не всередині методу. Тут ми продемонструємо, як enum оголошується всередині класу.
У наведеному нижче прикладі , ми створили перелік усередині класу, а потім отримали значення або перечислювач за допомогою посилальної змінної a1.
public class A { /* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1. * note that the new keyword was not used here */ cards a1 = cards.heart; System.out.println('Card is: '+ a1); } }
Вихід:
Ітерація Enum через цикли
Тут ми обговоримо, як можна прокрутити перелік. Ми оголосили перерахування чотирма перечислювачами (поза класом). Потім ми ініціалізували a для кожного циклу (всередині класу) і спробували отримати значення перечислювачів.
/* * created an enumeration called games * with four enumerators. */ enum games { ludo, Chess, Badminton, Cricket; } public class A { public static void main(String() args) { /* * used forEach loop and stored the value in 'index' * and printed the value of each enumerator */ System.out.println('Using for each loop'); for (games index:games.values()) { System.out.println(index); } } }
Вихід:
пристрої моделі osi використовують кожен шар
У if-else
У наведеній нижче програмі ми створили перелік з трьома різними перечислювачами, а потім зберегли перерахувач у посилальній змінній для одного із зазначених перерахувачів.
Потім ми розпочали перевірку умови if, де ми реалізували дві умови, зазначені АБО, щоб, якщо одна з цих умов виконана, він надрукував оператор, зазначений в умові if.
В іншому випадку він надрукує заяву, зазначену в умові else.
/* * created an enumeration called players * with three enumerators. */ enum players { sachin, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dhoni */ players a1 = players.dhoni; /* * Started if statement with OR condition. * If any of these conditions are met then it will * print the statement specified inside if statement */ if(a1 == players.virat || a1 == players.sachin) { System.out.println('Sachin and Virat are greatest batsmen'); } /* * if none of the above condition is met then it will * print the below specified statement */ else { System.out.println('Dhoni is the best Captain'); } } }
Вихід:
У заяві комутатора
У наведеній нижче програмі ми створили перелік із чотирма перечислювачами. Потім ми зберегли один із перечислювачів у посилальній змінній. Після цього ми ініціалізували оператор Switch і перевірили кожен з цих перечислювачів.
Після появи цього конкретного перерахувача він надрукує заяву, зазначену в конкретному випадку.
/* * created an enumeration called players * with four enumerators. */ enum players { sachin, dravid, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dravid */ players a1 = players.dravid; /* * Started Switch Statement and if the element * matches with a1 then it will print the statement * specified in the case */ switch(a1) { // does not match case sachin: System.out.println('Sachin is best bastman ever'); break; // matches case dravid: System.out.println('Dravid is the best Test Batsman'); break; // does not match case virat: System.out.println('Virat is modern great'); break; // does not match case dhoni: System.out.println('Dhoni is the best captain ever'); break; } } }
Вихід:
Поле переліку та методи
Enum Field
У цьому розділі буде детально пояснено поле переліку. Ми можемо додавати поля до переліку Java, і кожен перелічувач отримує ці поля. Значення поля має бути призначене конструктору переліку.
У наведеному нижче синтаксисі ми бачимо, що перерахування було визначено за допомогою трьох перечислювачів. Біля кожного перечислювача ми визначили поле типу int. ( Наприклад - (3), (2) та (1) відповідно).
Це означає, що Java enum має конструктор, який приймає int. Цей конструктор встановлює поле int. Коли визначається перечислювач, тоді це значення int (вказане для цього перечислювача) передається конструктору.
Синтаксис:
public enum A { /* * calls a contructor with value * defined on the respective enumerator */ Enumerator1(3), Enumerator2(2), Enumerator3(1) /* * semicolon needed for the last enumerator * if there is a method following it. */ ; private final int constant; private A(int constant) { this.constant = constant; } }
Примітка: Наприклад, у полі Enum див. Розділ “ Конструктор Enum '.
Методи перерахування
# 1) ім'я ()
public final String name () - Повертає ім'я константи, що викликається (незмінною або незмінною).
# 2) дорівнює ()
public final boolean equals (Object other) - Повертає true, якщо obj та об’єкт, що викликає, посилаються на одну і ту ж константу.
# 3) toString
public String toString () - Повертає ім'я константи, що викликається. Не обов'язково відповідає імені, використаному в декларації переліку.
# 4) клон
захищений кінцевий клон об'єкта ()
викидає CloneNotSupportedException - Це означає, що enum видасть виняток при спробі клонування.
# 5) hashCode ()
public final int hashCode () - Повертає хеш-код для об’єкта, що викликає.
# 6) finalize ()
захищений final void finalize () - клас enum не може мати завершених методів. Немає поверненого значення.
# 7) compareTo ()
public final int compareTo (E obj) - Це порівнює перелік із зазначеним об’єктом obj. Він повертає негатив, якщо об’єкт менше вказаного об’єкта. Він повертає позитив, якщо цей об'єкт більше вказаного об'єкта obj, і повертає нуль, якщо вказаний obj дорівнює цьому об'єкту.
# 8) getDeclaringClass
public final Class getDeclaringClass () - Повертає тип переліку (також відомий як клас оголошення enum), членом якого є константа, що викликає.
# 9) ordinal (), values () і valueOf ()
Всі ці методи є частиною пакету java.lang.Enum . Метод ordinal () повертає порядок константи переліку на основі індексу константи.
Метод values () повертає всі значення, присутні в переліку. Метод valueOf (String) повертає константу переліку вхідного рядка. Якщо вказаний рядок не співпадає з константою, він викине IllegalArgumentException.
Нижче наведено приклад програмування, де ми використали той самий приклад (як приклад ключового слова enum) та реалізували концепцію всіх трьох методів.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * created an array arr() which will store the * value of the constants/enumerators declared in the enumeration */ cards arr() = cards.values(); /* * used forEach loop and stored the value in 'type' * and printed the value as well as index with the help of * ordinal() method */ for (cards type:arr) { System.out.println(type + ' occurs at ' + type.ordinal()); } /* * passed heart as an input String which matches with the * constant declared in 'cards' */ System.out.println(cards.valueOf('heart')); } }
Вихід:
Конструктор Enum
Enum (оскільки це також клас) підтримує конструктор для передачі даних під час створення перечислювачів або також відомий як константи enum.
Основною властивістю конструктора перелічення є те, що вони є приватними або приватними пакетами. Це означає, що вони доступні або в класі, або в пакеті.
Давайте подивимось на приклад нижче. Тут ми використали як метод, так і конструктор. Перш за все, ми створили перелік із назвою «гравці», який має п’ять перелічувачів та поле.
Потім ми маємо конструктор і метод, який повертає кількість запусків, набраних кожним гравцем, перелічувачем або константою перерахування.
Після цього ми маємо основний клас, в якому ми використали для кожного циклу метод values () для зберігання та ітерації кожного перечислювача. Крім того, ми назвали метод для кількості пробігів, набраних кожним гравцем.
/* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; /* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; players(int r) { runs = r; } int getRuns() { return runs; } } /* * Used values() method to get the enumerators and a for each loop * to get the number of runs scored by each player */ public class A { public static void main(String args()) { for (players a : players.values()) System.out.println(a + ' has scored ' + a.getRuns() + ' ODI runs'); } }
Вихід:
Часті запитання
Q # 1) Яка різниця між Iterator та Enumeration у Java?
Відповідь: Нижче наведена різниця між Ітератором та Переліченням.
Ітератор | Перерахування |
---|---|
Це загальний курсор, який використовується для ітерації елементів і застосовується до всього класу колекції. | Це не загальний курсор, оскільки він застосовується лише до застарілих класів, таких як Enum. Лише дозвіл на читання для класу колекції. |
Деякі з методів є hasNext (), next () для ітерації. | Деякі з методів є hasMoreElements (), nextElement () для ітерації. |
Ми можемо вилучити елемент з колекції за допомогою ітератора. | Ми не можемо вилучити елемент із колекції за допомогою Enumeration, оскільки він має лише дозвіл на читання. |
Q # 2) Як Enum підтримує спадщину?
Відповідь: Afterall Enum - це також клас у Java, тому він повинен підтримувати спадкування, що є основним принципом OOPS. Усі перелічення розширюють клас java.lang.Enum. Оскільки клас може розширювати лише одного батька, клас Enum не поширює жодного іншого.
Функція toString (), яка є частиною класу Enum (пояснюється в розділі Метод Enum), перевизначена в класі java.lang.Enum.
Висновок
У цьому підручнику ми обговорили перелічення, перечислювачі, клас Java Enum та ключове слово enum із відповідними прикладами та поясненнями, де це потрібно. Крім того, ми дали уявлення про важливі методи, пов'язані з класом Enum із полем переліку.
Надано уявлення про конструктор, перерахування if-else, перемикач та цикли.
=> Завітайте сюди, щоб вивчити Java з нуля.
Рекомендована література
- Підручник з класу сканера Java із прикладами
- Java Integer та клас Java BigInteger з прикладами
- Підручник з Java Float із прикладами програмування
- Що таке Java Java | Підручник з класу Java Vector з прикладами
- TreeMap в Java - Підручник з прикладами Java TreeMap
- Двомісний підручник з прикладами програмування
- Підручник з класу масивів Java - java.util.Arrays Class з прикладами
- Поняття C #: конструктор, деструктор, статичний клас, структура та перелік