wyliczenie w Javie
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
// 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();> > }> }> |
Wyjś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
// 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'));>>}>}>
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