logo

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


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 kontakty
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




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:

Jawa




// 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

>

Wyjście

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