logo

enum in Java

A Giava, Enumerazioni o Java Enum hanno lo scopo di rappresentare un gruppo di costanti con nome in un linguaggio di programmazione. Le enumerazioni Java vengono utilizzate quando conosciamo tutti i valori possibili in fase di compilazione, come le scelte in un menu, le modalità di arrotondamento, i flag della riga di comando, ecc. L'insieme di costanti in un tipo enum non deve necessariamente rimanere fisso per sempre.

Cos'è l'enumerazione o l'enumerazione in Java?

Un'enumerazione Java è un tipo di classe. Sebbene non sia necessario creare un'istanza di un'enumerazione utilizzando nuovo, ha le stesse capacità delle altre classi. Questo fatto rende l'enumerazione Java uno strumento molto potente. Proprio come le classi, puoi fornire loro costruttori, aggiungere variabili e metodi di istanza e persino implementare interfacce.



Esempio di enumerazione:

I 4 semi in un mazzo di carte da gioco possono essere 4 enumeratori chiamati Club, Diamond, Heart e Spade, appartenenti a un tipo enumerato chiamato Suit. Altri esempi includono tipi naturali enumerati (come i pianeti, i giorni della settimana, i colori, le direzioni, ecc.).

Una cosa da tenere a mente è che, a differenza delle classi, le enumerazioni non ereditano altre classi né possono essere estese (cioè diventare superclasse). Possiamo anche aggiungervi variabili, metodi e costruttori. L'obiettivo principale di un'enumerazione è definire i nostri tipi di dati (tipi di dati enumerati).

Dichiarazione di enum in Java

La dichiarazione Enum può essere eseguita all'esterno di una Classe o all'interno di una Classe ma non all'interno di un Metodo.



1. Dichiarazione fuori classe

Giava






// 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);> >}> }>

>

>

Produzione

RED>

2. Dichiarazione all'interno di una classe

Giava


porta di ascolto



// 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);> >}> }>

>

>

Produzione

RED>
  • La prima riga all'interno dell'enumerazione dovrebbe essere un elenco di costanti e poi altre cose come metodi, variabili e costruttori.
  • Secondo Convenzioni di denominazione Java , si consiglia di denominare la costante con tutte le lettere maiuscole

Proprietà di Enum in Java

Ci sono alcune proprietà seguite da Enum come menzionato di seguito:

  • Ogni enum è implementata internamente utilizzando Class.
  • Ogni costante enum rappresenta un oggetto di tipo enum.
  • Il tipo enum può essere passato come argomento interruttore dichiarazioni.
  • Ogni costante enum è sempre implicitamente finale pubblica statica . Da quando è statico , possiamo accedervi utilizzando l'enumerazione Name. Da quando è finale , non possiamo creare enumerazioni secondarie.
  • Possiamo dichiarare il metodo main() all'interno dell'enum. Quindi possiamo invocare l'enumerazione direttamente dal prompt dei comandi.

Di seguito è riportata l'implementazione delle proprietà di cui sopra:

Giava




// 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();> >}> }>

>

>

sql seleziona come
Produzione

Mondays are bad.>

Programmi di enumerazione Java

1. Funzione principale all'interno di Enum

Possiamo dichiarare una funzione principale all'interno di un'enumerazione poiché possiamo invocare l'enumerazione direttamente dal prompt dei comandi.

Di seguito è riportata l'implementazione della proprietà di cui sopra:

Giava




// 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);> >}> }>

>

>

Produzione

RED>

2. Passare attraverso Enum

Possiamo scorrere l'Enum utilizzando valori() e loop. La funzionevalues() restituisce una matrice di valori Enum come costanti utilizzando le quali possiamo scorrere i valori.

Di seguito è riportata l'implementazione del loop through Enum:

Giava


algoritmo minimax



// 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);> >}> >}> }>

>

>

Produzione

RED GREEN BLUE>

3. Enum in un'istruzione Switch

Giava




// 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'>);> >}> >}> }>

>

>

Produzione

Other color observed>

Enumerazione ed ereditarietà

  • Tutte le enumerazioni si estendono implicitamente classe java.lang.Enum . Poiché una classe può solo estendersi uno parent in Java, un'enumerazione non può estendere nient'altro.
  • metodo toString() viene sovrascritto classe java.lang.Enum , che restituisce il nome della costante enum.
  • enum può implementare molte interfacce.

Enum e costruttore

  • Enum può contenere un costruttore e viene eseguito separatamente per ciascuna costante enum al momento del caricamento della classe enum.
  • Non possiamo creare oggetti enum in modo esplicito e quindi non possiamo invocare direttamente il costruttore enum.

Enumerazione e metodi

Enum può contenere entrambi calcestruzzo metodi e astratto metodi. Se una classe enum ha un metodo astratto, ogni istanza della classe enum deve implementarlo.

Giava




// 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();> >}> }>

>

>

Produzione

Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>

Domande frequenti su Enum in Java

Q1. Possiamo creare l'istanza di Enum con la nuova parola chiave?

Anni:

No, non possiamo creare l'istanza della parola chiave Enum perché contiene solo costruttori privati.

Q2. Possiamo avere un metodo astratto nell'Enum?

Anni:

Sì, abbiamo un metodo astratto in Enum.

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

Anni:

In Java, il metodovalues() può essere utilizzato per restituire tutti i valori presenti all'interno dell'enum.

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

Anni:

Il metodo valueOf() restituisce la costante enum del valore stringa specificato, se esiste.

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

Anni:

Utilizzando il metodo ordinal(), è possibile trovare ogni indice costante di enumerazione, proprio come un indice di array.

Q6. Scrivere un programma in Java per descrivere l'uso dei metodi value(), valueOf() e ordinal() nell'enum.

Anni:

Giava




// 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'));> >}> }>

>

Shreya Ghoshal

>

Produzione

RED at index 0 GREEN at index 1 BLUE at index 2 RED>

Articolo successivo sull'enumerazione: Enum con valore personalizzato in Java