na Jawie, Wyliczenia lub wyliczenie Java służą do reprezentowania grupy nazwanych stałych w języku programowania. Wyliczenia Java są używane, gdy w czasie kompilacji znamy wszystkie możliwe wartości, takie jak opcje w menu, tryby zaokrąglania, flagi wiersza poleceń itp. Zestaw stałych w typie wyliczeniowym nie musi być stały przez cały czas.
Co to jest wyliczenie lub wyliczenie w Javie?
Wyliczenie Java jest typem klasy. Chociaż nie musimy tworzyć instancji wyliczenia za pomocą nowy, ma takie same możliwości jak inne klasy. Fakt ten sprawia, że wyliczanie w języku Java jest bardzo potężnym narzędziem. Podobnie jak w przypadku klas, możesz dawać im konstruktory, dodawać zmienne i metody instancji, a nawet implementować interfejsy.
Przykład wyliczenia:
4 kolory w talii kart do gry mogą składać się z 4 liczników o nazwach trefl, karo, kier i pik, należących do wyliczonego typu zwanego kolorem. Inne przykłady obejmują naturalne typy wyliczeniowe (takie jak planety, dni tygodnia, kolory, kierunki itp.).
Należy pamiętać, że w przeciwieństwie do klas, wyliczenia nie dziedziczą innych klas ani nie mogą zostać rozszerzone (tj. stać się nadklasą). Możemy także dodawać do niego zmienne, metody i konstruktory. Głównym celem wyliczenia jest zdefiniowanie własnych typów danych (wyliczeniowe typy danych).
Deklaracja wyliczenia w Javie
Deklarację wyliczenia można wykonać poza klasą lub wewnątrz klasy, ale nie wewnątrz metody.
1. Deklaracja poza zajęciami
Jawa
// 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);> >}> }> |
>
>Wyjście
RED>
2. Deklaracja wewnątrz klasy
Jawa
nadzorowane uczenie maszynowe
// 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);> >}> }> |
>
>Wyjście
RED>
- Pierwsza linia wyliczenia powinna zawierać listę stałych, a następnie inne elementy, takie jak metody, zmienne i konstruktory.
- Według Konwencje nazewnictwa w Javie , zaleca się, aby stałą nazywać wielkimi literami
Właściwości Enum w Javie
Istnieją pewne właściwości, po których następuje Enum, jak wspomniano poniżej:
- Każde wyliczenie jest implementowane wewnętrznie przy użyciu klasy.
- Każda stała wyliczeniowa reprezentuje obiekt typu wyliczeniowego.
- Typ wyliczeniowy można przekazać jako argument do przełącznik sprawozdania.
- Każda stała wyliczeniowa jest zawsze niejawna publiczny statyczny finał . Od kiedy jest statyczny , możemy uzyskać do niego dostęp za pomocą wyliczenia Name. Od kiedy jest finał , nie możemy tworzyć wyliczeń podrzędnych.
- Możemy zadeklarować metoda main(). wewnątrz wyliczenia. Dlatego możemy wywołać wyliczenie bezpośrednio z wiersza poleceń.
Poniżej implementacja powyższych właściwości:
Jawa
// 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();> >}> }> |
>
>
zablokowane kontaktyWyjście
Mondays are bad.>
Programy wyliczeniowe w Javie
1. Główna funkcja wewnątrz Enum
Możemy zadeklarować główną funkcję wewnątrz wyliczenia, ponieważ możemy wywołać wyliczenie bezpośrednio z wiersza poleceń.
Poniżej implementacja powyższej właściwości:
Jawa
// 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);> >}> }> |
>
>Wyjście
RED>
2. Wykonaj pętlę przez Enum
Możemy iterować po Enum za pomocą wartości() i pętli. Funkcja wartości() zwraca tablicę wartości Enum jako stałe, za pomocą których możemy iterować po wartościach.
Poniżej znajduje się implementacja pętli poprzez Enum:
Jawa
// 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);> >}> >}> }> |
>
>Wyjście
RED GREEN BLUE>
3. Wyliczenie w instrukcji Switch
Jawa
// 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'>);> >}> >}> }> |
>
>Wyjście
Other color observed>
Wyliczenie i dziedziczenie
- Wszystkie wyliczenia domyślnie rozszerzają Klasa java.lang.Enum . Ponieważ klasa może się tylko rozciągać jeden parent w Javie, wyliczenie nie może rozszerzać niczego innego.
- metoda toString(). jest nadpisane Klasa java.lang.Enum , która zwraca stałą nazwę wyliczeniową.
- enum może implementować wiele interfejsów.
Wyliczenie i konstruktor
- Enum może zawierać konstruktor i jest wykonywany oddzielnie dla każdej stałej wyliczeniowej w momencie ładowania klasy wyliczeniowej.
- Nie możemy jawnie tworzyć obiektów wyliczeniowych i dlatego nie możemy bezpośrednio wywołać konstruktora wyliczeniowego.
Wyliczenie i metody
Enum może zawierać oba Beton metody i abstrakcyjny metody. Jeśli klasa wyliczeniowa ma metodę abstrakcyjną, wówczas każda instancja klasy wyliczeniowej musi ją implementować.
Jawa
wiek Hrithika Roshana
// 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();> >}> }> |
>
>Wyjście
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>
Często zadawane pytania dotyczące Enum w Javie
Pytanie 1. Czy możemy utworzyć instancję Enum za pomocą nowego słowa kluczowego?
Lata:
Nie, nie możemy utworzyć instancji słowa kluczowego Enum, ponieważ zawiera ona wyłącznie prywatne konstruktory.
Pytanie 2. Czy w Enum możemy mieć metodę abstrakcyjną?
Lata:
Tak, w Enum mamy metodę abstrakcyjną.
Pytanie 3. Jaki jest cel metody wartości() w wyliczeniu?
Lata:
W Javie metoda wartości() może zostać użyta do zwrócenia wszystkich wartości znajdujących się w wyliczeniu.
Pytanie 4. Jaki jest cel metody valueOf() w wyliczeniu?
Lata:
Metoda valueOf() zwraca stałą wyliczeniową określonej wartości ciągu, jeśli istnieje.
Pytanie 5. Jaki jest cel metody ordinal() w wyliczeniu?
Lata:
Dzięki metodzie ordinal() można znaleźć każdy stały indeks wyliczeniowy, podobnie jak indeks tablicy.
Pytanie 6. Napisz program w języku Java opisujący użycie metod wartości(), valueOf() i ordinal() w wyliczeniu.
Lata:
WyjścieJawa
// 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'));>>}>}>>samouczek dotyczący mikrousług>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
Następny artykuł na temat wyliczenia: Wyliczenie z niestandardową wartością w Javie