The Wyliczenie w Javie to typ danych zawierający ustalony zestaw stałych.
Można go używać do oznaczania dni tygodnia (niedziela, poniedziałek, wtorek, środa, czwartek, piątek i sobota), kierunków (północ, południe, wschód i zachód), pory roku (wiosna, lato, zima i jesień lub jesień). ), kolory (CZERWONY, ŻÓŁTY, NIEBIESKI, ZIELONY, BIAŁY i CZARNY) itp. Zgodnie z konwencją nazewnictwa w Javie wszystkie stałe powinniśmy pisać wielkimi literami. Mamy więc stałe wyliczeniowe pisane wielkimi literami.
Wyliczenia Java można traktować jako klasy, które mają stały zestaw stałych (zmienna, która się nie zmienia). Stałe wyliczeniowe Java są statyczne i domyślnie ostateczne. Jest dostępny od wersji JDK 1.5.
Madhubala
Wyliczenia służą do tworzenia własnego typu danych, takiego jak klasy. The wyliczenie typ danych (znany również jako wyliczeniowy typ danych) służy do definiowania wyliczenia w Javie. W przeciwieństwie do C/C++, enum w Javie to więcej potężny . Tutaj możemy zdefiniować wyliczenie wewnątrz klasy lub poza klasą.
Java Enum wewnętrznie dziedziczy Klasa wyliczeniowa , więc nie może dziedziczyć żadnej innej klasy, ale może implementować wiele interfejsów. W wyliczeniu Java możemy mieć pola, konstruktory, metody i metody główne.
Punkty do zapamiętania w przypadku Java Enum
- Enum poprawia bezpieczeństwo typów
- Enum można łatwo używać w przełączniku
- Enum można przechodzić
- Enum może mieć pola, konstruktory i metody
- Enum może implementować wiele interfejsów, ale nie może rozszerzać żadnej klasy, ponieważ wewnętrznie rozszerza klasę Enum
Prosty przykład wyliczenia Java
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); }}Przetestuj teraz
Wyjście:
WINTER SPRING SUMMER FALL
Zobaczmy inny przykład wyliczenia Java, w którym używamy metod wyliczenia Java (value(), valueOf() i ordinal().
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()); }}
Wyjście:
WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2
Uwaga: Kompilator Java wewnętrznie dodaje metody wartości(), valueOf() i ordinal() w ramach wyliczenia w czasie kompilacji. Tworzy wewnętrznie statyczną i końcową klasę dla wyliczenia.
Jaki jest cel metody wartości() w wyliczeniu?
Kompilator Java wewnętrznie dodaje metodę wartości() podczas tworzenia wyliczenia. Metoda wartości() zwraca tablicę zawierającą wszystkie wartości wyliczenia.
spróbuj złapać w Javie
Jaki jest cel metody valueOf() w wyliczeniu?
Kompilator Java wewnętrznie dodaje metodę valueOf() podczas tworzenia wyliczenia. Metoda valueOf() zwraca wartość zadanego wyliczenia stałego.
Jaki jest cel metody ordinal() w wyliczeniu?
Kompilator Java wewnętrznie dodaje metodę ordinal() podczas tworzenia wyliczenia. Metoda ordinal() zwraca indeks wartości wyliczeniowej.
Definiowanie wyliczenia Java
Wyliczenie można zdefiniować wewnątrz lub na zewnątrz klasy, ponieważ jest podobne do klasy. Średnik (;) na końcu stałych wyliczeniowych jest opcjonalny. Na przykład:
enum Season { WINTER, SPRING, SUMMER, FALL }
Lub,
enum Season { WINTER, SPRING, SUMMER, FALL; }
Obie definicje wyliczenia Java są takie same.
Przykład wyliczenia Java: Zdefiniowana klasa zewnętrzna
enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }}Przetestuj teraz
Wyjście:
WINTER
Przykład wyliczenia Java: Zdefiniowany wewnątrz klasy
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); }}Przetestuj teraz
Wyjście:
WINTER
Przykład Java Enum: główna metoda wewnątrz Enum
Jeśli umieścisz metodę main() wewnątrz wyliczenia, możesz uruchomić wyliczenie bezpośrednio.
enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } }
Wyjście:
WINTER
Inicjowanie określonych wartości do stałych wyliczeniowych
Stałe wyliczeniowe mają wartość początkową rozpoczynającą się od 0, 1, 2, 3 i tak dalej. Możemy jednak zainicjować określoną wartość stałych wyliczeniowych, definiując pola i konstruktory. Jak określono wcześniej, Enum może mieć pola, konstruktory i metody.
Przykład podania wartości początkowej do stałych wyliczeniowych
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); }}Przetestuj teraz
Wyjście:
obsługa wyjątków Java
WINTER 5 SPRING 10 SUMMER 15 FALL 20
Konstruktor typu wyliczeniowego jest prywatny. Jeśli nie zadeklarujesz prywatnego kompilatora wewnętrznie, utworzy się prywatny konstruktor.
enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } }
Kod wewnętrzny wygenerowany przez kompilator dla powyższego przykładu typu wyliczeniowego
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 }); } }
Czy możemy utworzyć instancję Enum za pomocą nowego słowa kluczowego?
Nie, ponieważ zawiera tylko prywatnych konstruktorów. |
Czy w Enum możemy mieć metodę abstrakcyjną?
Oczywiście, że tak! możemy mieć metody abstrakcyjne i zapewnić implementację tych metod.
Java Enum w instrukcji switch
Możemy zastosować wyliczenie w instrukcji switch, jak w podanym przykładzie:
Przykład zastosowania Enum w instrukcji 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'); } }}Przetestuj teraz
Wyjście:
monday