logo

Wyliczenia Java

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
Punkty wyliczeniowe Java

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