logo

Enumerazioni Java

IL Enumerazione in Java è un tipo di dati che contiene un insieme fisso di costanti.

Può essere utilizzato per i giorni della settimana (DOMENICA, LUNEDI, MARTEDI, MERCOLEDI, GIOVEDI, VENERDÌ e SABATO), le direzioni (NORD, SUD, EST e OVEST), la stagione (PRIMAVERA, ESTATE, INVERNO e AUTUNNO o AUTUNNO ), colori (ROSSO, GIALLO, BLU, VERDE, BIANCO e NERO) ecc. Secondo le convenzioni di denominazione Java, dovremmo avere tutte le costanti in lettere maiuscole. Quindi, abbiamo costanti enum in lettere maiuscole.

Le enumerazioni Java possono essere pensate come classi che hanno un insieme fisso di costanti (una variabile che non cambia). Le costanti di enumerazione Java sono statiche e finali in modo implicito. È disponibile a partire da JDK 1.5.

char e int java

Le enumerazioni vengono utilizzate per creare il nostro tipo di dati come le classi. IL enum il tipo di dati (noto anche come tipo di dati enumerato) viene utilizzato per definire un'enumerazione in Java. A differenza di C/C++, enum in Java è di più potente . Qui possiamo definire un'enumerazione all'interno o all'esterno della classe.

Java Enum eredita internamente il file Classe di enumerazione , quindi non può ereditare nessun'altra classe, ma può implementare molte interfacce. Possiamo avere campi, costruttori, metodi e metodi principali nell'enumerazione Java.

Punti da ricordare per Java Enum

  • Enum migliora la sicurezza dei tipi
  • Enum può essere facilmente utilizzato in switch
  • Enum può essere attraversato
  • Enum può avere campi, costruttori e metodi
  • Enum può implementare molte interfacce ma non può estendere alcuna classe perché estende internamente la classe Enum
Punti enumerazione Java

Semplice esempio di enumerazione Java

 class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }} 
Provalo adesso

Produzione:

 WINTER SPRING SUMMER FALL 

Vediamo un altro esempio di enum Java in cui utilizziamo i metodi value(), valueOf() e ordinal() di enum Java.

 class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }} 

Produzione:

 WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2 

Nota: il compilatore Java aggiunge internamente i metodi value(), valueOf() e ordinal() all'interno dell'enumerazione in fase di compilazione. Crea internamente una classe statica e finale per l'enumerazione.

Qual è lo scopo del metodo value() nell'enum?

Il compilatore Java aggiunge internamente il metodo valori() quando crea un'enumerazione. Il metodovalue() restituisce un array contenente tutti i valori dell'enum.

Qual è lo scopo del metodo valueOf() nell'enum?

Il compilatore Java aggiunge internamente il metodo valueOf() quando crea un'enumerazione. Il metodo valueOf() restituisce il valore di una determinata enumerazione costante.

Qual è lo scopo del metodo ordinal() nell'enum?

Il compilatore Java aggiunge internamente il metodo ordinal() quando crea un'enumerazione. Il metodo ordinal() restituisce l'indice del valore enum.


Definizione dell'enumerazione Java

L'enumerazione può essere definita all'interno o all'esterno della classe poiché è simile a una classe. Il punto e virgola (;) alla fine delle costanti enum è facoltativo. Per esempio:

 enum Season { WINTER, SPRING, SUMMER, FALL } 

O,

 enum Season { WINTER, SPRING, SUMMER, FALL; } 

Entrambe le definizioni di Java enum sono le stesse.

Esempio di enumerazione Java: classe esterna definita

 enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }} 
Provalo adesso

Produzione:

Java converte un numero intero in una stringa
 WINTER 

Esempio di enumerazione Java: definito all'interno della classe

 class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }} 
Provalo adesso

Produzione:

siti web di film simili a 123movies
 WINTER 

Esempio di Enum Java: metodo main all'interno di Enum

Se inserisci il metodo main() all'interno dell'enumerazione, puoi eseguire direttamente l'enumerazione.

 enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } } 

Produzione:

 WINTER 

Inizializzazione di valori specifici nelle costanti enum

Le costanti enum hanno un valore iniziale che inizia da 0, 1, 2, 3 e così via. Ma possiamo inizializzare il valore specifico sulle costanti enumerando definendo campi e costruttori. Come specificato in precedenza, Enum può avere campi, costruttori e metodi.

Esempio di specifica del valore iniziale per le costanti enum

 class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }} 
Provalo adesso

Produzione:

 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Il costruttore del tipo enum è privato. Se non dichiari il compilatore privato, crea internamente il costruttore privato.

 enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } } 

Codice interno generato dal compilatore per l'esempio precedente di tipo enum

 final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } } 

Possiamo creare l'istanza di Enum con una nuova parola chiave?

No, perché contiene solo costruttori privati.

Possiamo avere un metodo astratto nell'Enum?

Sì, naturalmente! possiamo avere metodi astratti e possiamo fornire l'implementazione di questi metodi.


Enum Java in un'istruzione switch

Possiamo applicare l'enumerazione sull'istruzione switch come nell'esempio fornito:

Esempio di applicazione di Enum su un'istruzione switch

 class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }} 
Provalo adesso

Produzione:

 monday