Guida per principianti a Java eNum – Perché e per cosa dovrei usare Enum? Esempi di enum Java
Pubblicato: 2019-04-23 Le enumerazioni sono elenchi di constants
come variabili non modificabili. Hai sentito parlare della Final keyword
? È come questo.
Quando hai bisogno di un elenco predefinito di valori che rappresentano un tipo di dati numerici o testuali, dovresti usare un enum. Ad esempio, in una partita di scacchi potresti rappresentare i diversi tipi di pezzi come un enum:
1 2 3 4 5 6 7 8 |
enum ChessPiece { PAWN , ROOK , KNIGHT , BISHOP , QUEEN , KING ; } |
Dovresti sempre usare le enumerazioni quando una variabile (in particolare un parametro di metodo) può prenderne solo una da un piccolo insieme di valori possibili. Esempi potrebbero essere cose come le costanti di tipo (stato del contratto: "permanente", "temporaneo", "apprendista") o i flag ("esegui ora", "differisci l'esecuzione").
Se si utilizzano enumerazioni anziché numeri interi (o codici stringa), si aumenta il controllo in fase di compilazione ed evitano che gli errori vengano trasmessi in costanti non valide e si documentano quali valori è consentito utilizzare.
Esempio 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 ( ) ; } } |
Produzione:
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 |
Alcuni punti molto importanti su Java Enum:
Punto-1
Tutte le enum estendono implicitamente java.lang.Enum
. Poiché Java non supporta l'ereditarietà multipla, un'enumerazione non può estendere nient'altro.
Punto-2
Enum in Java are type-safe:
Enum ha il proprio spazio dei nomi. Significa che la tua enum avrà un tipo, ad esempio "Società" nell'esempio seguente e non puoi assegnare alcun valore diverso da quello specificato in Enum Constants.
1 2 3 4 5 6 |
public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName = Company . EBAY ; cName = 1 ; // Compilation Error |

Punto-3
È possibile specificare i valori delle costanti enum al momento della creazione. MyEnum.values()
restituisce una matrice di valori di 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 ) ; } } } |
Produzione:
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 |
Punto-4
Le costanti Enum sono implicitamente statiche e finali e non possono essere modificate una volta create.
Punto-5
Enum può essere tranquillamente confrontato usando:
- Dichiarazione Switch-Case
- == Operatore
- Metodo .equals() Segui il tutorial completo.
1 2 3 4 |
Company eBay = Company . EBAY ; if ( eBay == Company . EBAY ) { log . info ( "enum in java can be compared using ==" ) ; } |
Punto-6
Non è possibile creare un'istanza di enums utilizzando new operator in Java perché il costruttore di Enum in Java può essere solo privato e le costanti Enums possono essere create solo all'interno di Enums stesso.
Punto-7
L'istanza di Enum in Java viene creata quando qualsiasi costante Enum viene chiamata o referenziata per la prima volta nel codice.
Punto-8
Un enum specifica un elenco di valori costanti assegnati a un tipo.
Punto-9
Un enum può essere dichiarato all'esterno o all'interno di una classe, ma NON in un metodo.
Punto-10
Un enum dichiarato all'esterno di una classe NON deve essere contrassegnato come static, final , abstract, protected o private
Punto-11
Le enumerazioni possono contenere costruttori, metodi, variabili e corpi di classe costanti.
Punto-12
enum costanti possono inviare argomenti al costruttore enum, usando la sintassi BIG(8), dove l'int letterale 8 viene passato al costruttore enum.
Punto-13
i costruttori enum possono avere argomenti e possono essere sovraccaricati.
Punto-14
i costruttori enum non possono MAI essere invocati direttamente nel codice. Vengono sempre chiamati automaticamente quando viene inizializzata un'enumerazione.
Punto-15
Il punto e virgola alla fine di una dichiarazione enum è facoltativo.
Questi sono legali:
- enum Foo { UNO, DUE, TRE}
- enum Foo { UNO, DUE, TRE};
Un altro semplice esempio di Java eNUM:
Gli enum sono elenchi di costanti. Quando hai bisogno di un elenco predefinito di valori che rappresentano un tipo di dati numerici o testuali, dovresti usare un enum.
Dovresti sempre usare le enumerazioni quando una variabile (in particolare un parametro di metodo) può prenderne solo una da un piccolo insieme di valori possibili. Esempi potrebbero essere cose come le costanti di tipo (stato del contratto: "permanente", "temporaneo", "apprendista") o i flag ("esegui ora", "differisci l'esecuzione").
Se si utilizzano enumerazioni anziché numeri interi (o codici stringa), si aumenta il controllo in fase di compilazione ed evitano che gli errori vengano trasmessi in costanti non valide e si documentano quali valori è consentito utilizzare.
In mezzo, l'uso eccessivo di enum potrebbe significare che i tuoi metodi fanno troppo (spesso è meglio avere diversi metodi separati, piuttosto che un metodo che accetta diversi flag che modificano ciò che fa), ma se devi usare flag o digitare codici, enums sono la strada da percorrere.
Questo è un esempio Java eNum molto semplice
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 ( ) ) ; } } |
Produzione:
1 |
Get enum value for Comapny 'eBay' : Value : E |