Przewodnik dla początkujących po Java eNum – Dlaczego i do czego powinienem używać Enum? Przykłady wyliczeń w języku Java
Opublikowany: 2019-04-23 Wyliczenia to listy constants
, takich jak zmienne, których nie można zmienić. Czy słyszałeś o Final keyword
? To tak.
Kiedy potrzebujesz predefiniowanej listy wartości, które reprezentują jakiś rodzaj danych liczbowych lub tekstowych, powinieneś użyć wyliczenia. Na przykład w grze w szachy możesz przedstawić różne rodzaje bierek jako wyliczenie:
1 2 3 4 5 6 7 8 |
enum ChessPiece { PAWN , ROOK , KNIGHT , BISHOP , QUEEN , KING ; } |
Należy zawsze używać wyliczeń, gdy zmienna (zwłaszcza parametr metody) może pobrać tylko jedną z małego zestawu możliwych wartości. Przykładami mogą być takie elementy, jak stałe typu (status kontraktu: „stały”, „temp”, „uczeń”) lub flagi („wykonaj teraz”, „odrocz wykonanie”).
Jeśli używasz wyliczeń zamiast liczb całkowitych (lub kodów łańcuchowych), zwiększasz sprawdzanie w czasie kompilacji i unikasz błędów związanych z przekazywaniem nieprawidłowych stałych oraz dokumentujesz, które wartości są dozwolone.
Przykład Java :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName ; public CrunchifyEnumExample ( Company cName ) { this . cName = cName ; } public void companyDetails ( ) { switch ( cName ) { case EBAY : System . out . println ( "EBAY: Biggest Market Place in the World." ) ; break ; case PAYPAL : System . out . println ( "PAYPAL: Simplest way to manage Money." ) ; break ; case GOOGLE : case YAHOO : System . out . println ( "YAHOO: 1st Web 2.0 Company." ) ; break ; default : System . out . println ( "DEFAULT: Google - biggest search giant.. ATT - my carrier provider.." ) ; break ; } } public static void main ( String [ ] args ) { CrunchifyEnumExample ebay = new CrunchifyEnumExample ( Company . EBAY ) ; ebay . companyDetails ( ) ; CrunchifyEnumExample paypal = new CrunchifyEnumExample ( Company . PAYPAL ) ; paypal . companyDetails ( ) ; CrunchifyEnumExample google = new CrunchifyEnumExample ( Company . GOOGLE ) ; google . companyDetails ( ) ; CrunchifyEnumExample yahoo = new CrunchifyEnumExample ( Company . YAHOO ) ; yahoo . companyDetails ( ) ; CrunchifyEnumExample att = new CrunchifyEnumExample ( Company . ATT ) ; att . companyDetails ( ) ; } } |
Wyjście:
1 2 3 4 5 6 7 |
EBAY : Biggest Market Place in the World . PAYPAL : Simplest way to manage Money . YAHOO : 1st Web 2.0 Company . YAHOO : 1st Web 2.0 Company . DEFAULT : Google - biggest search giant . . ATT - my carrier provider . . Process finished with exit code 0 |
Kilka bardzo ważnych punktów w Java Enum:
Punkt-1
Wszystkie wyliczenia niejawnie rozszerzają java.lang.Enum
. Ponieważ Java nie obsługuje wielokrotnego dziedziczenia, wyliczenie nie może rozszerzać niczego innego.
Punkt-2
Enum in Java are type-safe:
Enum ma tam własną przestrzeń nazw. Oznacza to, że twoje wyliczenie będzie miało typ na przykład „Firma” w poniższym przykładzie i nie możesz przypisać żadnej wartości innej niż określona w Stałe wyliczenia.
1 2 3 4 5 6 |
public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName = Company . EBAY ; cName = 1 ; // Compilation Error |

Punkt-3
Możesz określić wartości stałych wyliczenia w czasie tworzenia. MyEnum.values()
zwraca tablicę wartości MyEnum.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com . crunchify . tutorial ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY ( 30 ) , PAYPAL ( 10 ) , GOOGLE ( 15 ) , YAHOO ( 20 ) , ATT ( 25 ) ; private int value ; private Company ( int value ) { this . value = value ; } } public static void main ( String [ ] args ) { for ( Company cName : Company . values ( ) ) { System . out . println ( "Company Value: " + cName . value + " - Company Name: " + cName ) ; } } } |
Wyjście:
1 2 3 4 5 |
Company Value : 30 - Company Name : EBAY Company Value : 10 - Company Name : PAYPAL Company Value : 15 - Company Name : GOOGLE Company Value : 20 - Company Name : YAHOO Company Value : 25 - Company Name : ATT |
Punkt-4
Stałe wyliczenia są niejawnie statyczne i ostateczne i nie można ich zmienić po utworzeniu.
Punkt-5
Enum można bezpiecznie porównać za pomocą:
- Oświadczenie dotyczące przełącznika
- == Operator
- Metoda .equals()Proszę postępować zgodnie z pełnym samouczkiem.
1 2 3 4 |
Company eBay = Company . EBAY ; if ( eBay == Company . EBAY ) { log . info ( "enum in java can be compared using ==" ) ; } |
Punkt-6
Nie można utworzyć wystąpienia enums za pomocą operatora new w Javie, ponieważ konstruktor Enum w Javie może być tylko prywatny, a stałe Enums można tworzyć tylko w samym Enums.
Punkt-7
Wystąpienie Enum w Javie jest tworzone, gdy dowolne stałe Enum są po raz pierwszy wywoływane lub przywoływane w kodzie.
Punkt-8
Wyliczenie określa listę wartości stałych przypisanych do typu.
Punkt-9
Enum można zadeklarować na zewnątrz lub wewnątrz klasy, ale NIE w metodzie.
Punkt-10
Wyliczenie zadeklarowane poza klasą NIE może być oznaczone jako statyczne, końcowe , abstrakcyjne, chronione ani prywatne
Punkt-11
Wyliczenia mogą zawierać konstruktory, metody, zmienne i stałe treści klas.
Punkt-12
Stałe enum mogą wysyłać argumenty do konstruktora enum, używając składni BIG(8), gdzie literał int 8 jest przekazywany do konstruktora enum.
Punkt-13
Konstruktory enum mogą mieć argumenty i mogą być przeciążone.
Punkt-14
Konstruktory enum NIGDY nie mogą być wywoływane bezpośrednio w kodzie. Są one zawsze wywoływane automatycznie podczas inicjowania wyliczenia.
Punkt-15
Średnik na końcu deklaracji wyliczenia jest opcjonalny.
Są to legalne:
- enum Foo { RAZ, DWA, TRZY}
- enum Foo { JEDNA, DWA, TRZY};
Inny prosty przykład Java eNUM:
Wyliczenia to listy stałych. Kiedy potrzebujesz predefiniowanej listy wartości, które reprezentują jakiś rodzaj danych liczbowych lub tekstowych, powinieneś użyć wyliczenia.
Należy zawsze używać wyliczeń, gdy zmienna (zwłaszcza parametr metody) może pobrać tylko jedną z małego zestawu możliwych wartości. Przykładami mogą być takie elementy, jak stałe typu (status kontraktu: „stały”, „temp”, „uczeń”) lub flagi („wykonaj teraz”, „odrocz wykonanie”).
Jeśli używasz wyliczeń zamiast liczb całkowitych (lub kodów łańcuchowych), zwiększasz sprawdzanie w czasie kompilacji i unikasz błędów związanych z przekazywaniem nieprawidłowych stałych oraz dokumentujesz, które wartości są dozwolone.
Pomiędzy, nadużywanie wyliczeń może oznaczać, że twoje metody robią zbyt wiele (często lepiej jest mieć kilka oddzielnych metod, niż jedną metodę, która przyjmuje kilka flag, które modyfikują to, co robi), ale jeśli musisz użyć flag lub kodów typów, wyliczenia są do zrobienia.
To jest bardzo prosty przykład Java eNum
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public enum CrunchifyEnumCompany { GOOGLE ( "G" ) , YAHOO ( "Y" ) , EBAY ( "E" ) , PAYPAL ( "P" ) ; private String companyLetter ; private CrunchifyEnumCompany ( String s ) { companyLetter = s ; } public String getCompanyLetter ( ) { return companyLetter ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package com . crunchify . tutorials ; import com . crunchify . tutorials . CrunchifyEnumCompany ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public static void main ( String [ ] args ) { System . out . println ( "Get enum value for Comapny 'eBay': " + CrunchifyEnumCompany . EBAY . getCompanyLetter ( ) ) ; } } |
Wyjście:
1 |
Get enum value for Comapny 'eBay' : Value : E |