Ghid pentru începători pentru Java eNum – De ce și pentru ce ar trebui să folosesc Enum? Exemple de enumerare Java
Publicat: 2019-04-23 Enumerările sunt liste de constants
precum variabilele neschimbabile. Ați auzit de Final keyword
? Este ca asta.
Când aveți nevoie de o listă predefinită de valori care reprezintă un fel de date numerice sau textuale, ar trebui să utilizați o enumerare. De exemplu, într-un joc de șah puteți reprezenta diferitele tipuri de piese ca enumerare:
1 2 3 4 5 6 7 8 |
enum ChessPiece { PAWN , ROOK , KNIGHT , BISHOP , QUEEN , KING ; } |
Ar trebui să utilizați întotdeauna enumări atunci când o variabilă (în special un parametru de metodă) poate lua doar una dintr-un set mic de valori posibile. Exemplele ar fi lucruri precum constantele de tip (starea contractului: „permanent”, „temp”, „ucenic”) sau steaguri („execută acum”, „amână execuția”).
Dacă utilizați enumerări în loc de numere întregi (sau coduri șiruri de caractere), creșteți verificarea la timp de compilare și eviți erorile de transmitere a constantelor nevalide și documentați ce valori sunt legale de utilizat.
Exemplu 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 ( ) ; } } |
Ieșire:
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 |
Câteva puncte foarte importante despre Java Enum:
Punctul-1
Toate enumerarile extind implicit java.lang.Enum
. Deoarece Java nu acceptă moștenirea multiplă, o enumerare nu poate extinde nimic altceva.
Punctul-2
Enum in Java are type-safe:
Enum are propriul spațiu de nume. Înseamnă că enumerarea dvs. va avea un tip, de exemplu, „Companie” în exemplul de mai jos și nu puteți atribui nicio altă valoare decât cea specificată în Constante enumerare.
1 2 3 4 5 6 |
public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName = Company . EBAY ; cName = 1 ; // Compilation Error |

Punctul-3
Puteți specifica valori ale constantelor enumerate la momentul creării. MyEnum.values()
returnează o matrice a valorilor 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 ) ; } } } |
Ieșire:
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 |
Punctul-4
Constantele enumerare sunt implicit statice și finale și nu pot fi modificate odată create.
Punctul-5
Enum poate fi comparat în siguranță folosind:
- Declarație Switch-Case
- == Operator
- Metoda .equals() Vă rugăm să urmați tutorialul complet.
1 2 3 4 |
Company eBay = Company . EBAY ; if ( eBay == Company . EBAY ) { log . info ( "enum in java can be compared using ==" ) ; } |
Punctul-6
Nu puteți crea instanțe de enumări folosind un operator nou în Java, deoarece constructorul Enum în Java poate fi doar privat, iar constantele Enums pot fi create numai în interiorul Enums în sine.
Punctul-7
Instanța Enum în Java este creată atunci când orice constantă Enum este prima dată apelată sau referită în cod.
Punctul-8
O enumerare specifică o listă de valori constante atribuite unui tip.
Punctul-9
O enumerare poate fi declarată în afara sau în interiorul unei clase, dar NU într-o metodă.
Punctul-10
O enumerare declarată în afara unei clase NU trebuie să fie marcată static, final, abstract, protejat sau privat
Punctul-11
Enumerările pot conține constructori, metode, variabile și corpuri constante ale clasei.
Punctul-12
Constantele enum pot trimite argumente constructorului enum, folosind sintaxa BIG(8), unde literalul int 8 este transmis constructorului enum.
Punctul-13
constructorii enum pot avea argumente și pot fi supraîncărcați.
Punctul-14
constructorii enum nu pot fi invocați NICIODATĂ direct în cod. Ele sunt întotdeauna apelate automat când o enumerare este inițializată.
Punctul-15
Punctul și virgulă de la sfârșitul unei declarații de enumerare este opțional.
Acestea sunt legale:
- enum Foo { ONE, TWO, THREE}
- enum Foo { UNA, DOI, TREI};
Un alt exemplu Java eNUM simplu:
Enumerările sunt liste de constante. Când aveți nevoie de o listă predefinită de valori care reprezintă un fel de date numerice sau textuale, ar trebui să utilizați o enumerare.
Ar trebui să utilizați întotdeauna enumări atunci când o variabilă (în special un parametru de metodă) poate lua doar una dintr-un set mic de valori posibile. Exemplele ar fi lucruri precum constantele de tip (starea contractului: „permanent”, „temp”, „ucenic”) sau steaguri („execută acum”, „amână execuția”).
Dacă utilizați enumerări în loc de numere întregi (sau coduri șiruri de caractere), creșteți verificarea la timp de compilare și eviți erorile de transmitere a constantelor nevalide și documentați ce valori sunt legale de utilizat.
Între ele, utilizarea excesivă a enumărilor ar putea însemna că metodele dvs. fac prea mult (de multe ori este mai bine să aveți mai multe metode separate, mai degrabă decât o metodă care necesită mai multe steaguri care modifică ceea ce face), dar dacă trebuie să utilizați steaguri sau să tastați coduri, enumări sunt calea de urmat.
Acesta este un exemplu Java eNum foarte simplu
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 ( ) ) ; } } |
Ieșire:
1 |
Get enum value for Comapny 'eBay' : Value : E |