Tutorial Java Enum: che cos'è e come implementarlo?



Questo articolo su Java Enum Tutorial ti fornirà una conoscenza dettagliata delle costanti Enum insieme ad esempi pratici per una migliore comprensione.

Il Enumerazione in è un modo per definire una classe con costanti fisse e denominate con le rispettive utilizzando la parola chiave enum. In questo ' Tutorial Java Enum 'Articolo, impareremo adefinire l'enumerazione insieme aesempi per una migliore comprensione.

Cos'è l'enumerazione?

Java Enums sono classi che hanno un insieme fisso di costanti o variabili che non tendono a cambiare. L'enumerazione in Java si ottiene utilizzando la parola chiave enum. Il Java enum le costanti sono statico e finale implicitamente. La funzione Enum è disponibile da JDK versione 1.5.0





Perché abbiamo bisogno dell'enumerazione?

enum Migliora l'indipendenza dai tipi in fase di compilazione per evitare errori in fase di esecuzione evitando il codice boilerplate. Ad esempio, se devi selezionare una possibilità dal minor numero di opzioni disponibili, ad esempio,

Lavoro Genere: (Contrarre / Temporaneo / Permanente)



Impiegato tutorial Java enum

Quindi l'opzione migliore sarebbe usare un file enum. Perché enum può essere facilmente utilizzato nell'interruttore. enum può essere attraversato. enum può avere campi, costruttori e metodi. Quindi, aumenta il controllo in fase di compilazione ed evita errori dovuti al passaggio di costanti non valide, poiché hai già documentato quali valori sono legali da utilizzare.

Differenze tra Enum e Class

Sebbene una classe e un'enumerazione abbiano funzionalità simili nell'ambiente Java, differiscono in alcuni aspetti. Parliamo delle differenze



Enum Classe
Le costanti Enum non possono essere sovrascritteLe costanti di classe possono essere sovrascritte
Enum non supporta la creazione di oggettiLa classe supporta la creazione di oggetti
Enum non può estendere altre classiUna classe può estendere altre classi
enum cun'interfaccia dell'attrezzoUna classe può implementare Interface


Esempi pratici di Enum

Ora, per capire enum in un modo molto migliore, eseguiamo alcuni esempi pratici basati su quanto segue.

Definizione dell'enumerazione in Java

Enum può essere dichiarato all'interno di una classe o all'esterno di un cpermettere. Ma non può essere dichiarato all'interno di alcun metodo. Facciamo un piccolo esempio per comprenderne la sintassi, la definizione e la dichiarazione.

Sintassi:

enum nome {costanti}

In questo esempio, abbiamo dichiarato il principale() metodo dentro enum

definizione pacchetto public class Edureka {enum Level {BAJA, KTM, YAMAHA} public static void main (String [] args) {Level myVar = Level.KTM System.out.println (myVar)}}

// Ouput

KTM

In questo esempio, il principale() viene dichiarato il metodo al di fuori di enum.

definizione pacchetto enum Colore {BAJAJ, KTM, YAMAHA} public class Edureka {public static void main (String [] args) {Bike b1 = Color.YAMAHA System.out.println (b1)}}

//Produzione:

YAMAHA

Enum utilizzato in Switch Case

L'enumerazione può essere utilizzata anche in un'istruzione switch. È importante che tutte le istruzioni case debbano utilizzare costanti dalla stessa enum utilizzata dall'istruzione switch. Controlliamo un esempio basato su questo.

Qui, dichiareremo un'enumerazione con i giorni della settimana come suoi elementi e passeremo i dati sotto forma di una stringa per stampare i dati del caso corrispondente.

pacchetto attivato enum Giorno {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public class Edureka {Day day public Edureka (Day day) {this.day = day} public void dayIsLike () {switch (day) {case LUNEDÌ: System.out.println ('Ciao, oggi è lunedì') break case MARTEDÌ: System.out.println ('Ciao, oggi è martedì') break case MERCOLEDÌ: System.out.println ('Ciao, oggi è mercoledì ') break case GIOVEDÌ: System.out.println (' Ciao, oggi è giovedì ') break case VENERDI: System.out.println (' Ciao, oggi è venerdì. ') break case SABATO: System.out.println (' Ciao, Oggi è il tuo fine settimana ') break case DOMENICA: System.out.println (' Ciao, Oggi è un giorno festivo ') pausa predefinita: System.out.println (' Inserisci un giorno valido. ') Break}} public static void main (String [] args) {String str = 'MONDAY' Edureka e1 = new Edureka (Day.valueOf (str)) e1.dayIsLike ()}}

//Produzione:

Ciao, oggi èLunedi

Ereditarietà tramite enum

Fondamentalmente, qualsiasi enum è rappresentato come una classe che estende la classe astratta java.lang. Enum e ha diversi membri statici. Pertanto, un file enum non può estendere nessun'altra classe o enum non ci sono multipli eredità . Facciamo un esempio per capirlo in modo migliore.

Qui erediteremo il sistema operativo basato sul produttore del telefono.

package inheritance import java.util.ArrayList import java.util.List public class Edureka {public static void main (String [] args) {List inherit = new ArrayList () inherit.add (LibraryEnum.FIRST) inherit.add (ClientEnum. google) per (HTTPMethodConvertible element: inherit) {System.out.println (element.getHTTPMethodType ())}} interfaccia statica HTTPMethodConvertible {public String getHTTPMethodType ()} static enum LibraryEnum implementa HTTPMethodConvertible {FIRST ('Google Pixel'), SECOND ( 'Huawei'), THIRD ('Apple 11 Pro') String httpMethodType LibraryEnum (String phone) {httpMethodType = phone} public String getHTTPMethodType () {return httpMethodType}} static enum ClientEnum implementa HTTPMethodConvertible {huawei ('HongMing OS'), apple ('iOS'), google ('Android One') String httpMethodType ClientEnum (String s) {httpMethodType = s} public String getHTTPMethodType () {return httpMethodType}}}

//Produzione:

Google Pixel
Android One

Enum con valori personalizzati

miglior software per la programmazione java

Le enumerazioni hanno i propri valori stringa per impostazione predefinita, possiamo anche assegnare alcuni valori personalizzati alle enumerazioni. Consideriamo l'esempio seguente.

enum Traffic {ROSSO ('STOP'), ARANCIONE ('WAIT'), VERDE ('VAI')}

Nell'esempio precedente, possiamo vedere che l'enumerazione del traffico ha tre membri. Vale a dire,

ROSSO, ARANCIONE e VERDE con hanno i propri valori personalizzati diversi STOP, ASPETTA e PARTIRE rispettivamente.

Ora per usare lo stesso tipo di enum nel codice ci si aspetta di seguire alcuni punti che sono:

  • Dobbiamo creare costruttore parametrizzato per questa classe enum. Perché lo sappiamo enum l'oggetto della classe non può essere creato in modo esplicito, quindi per l'inizializzazione utilizziamo il costruttore parametrizzato.
  • Il costruttore non può essere pubblico o protetto che deve avere privato o predefinito modificatori. Se creiamo pubblico o protetto, consentirà di inizializzare più di un oggetto che è totalmente contrario funzionalità enum.
  • Dobbiamo creare un metodo getter per ottenere il valore di enumerazioni.

Eseguiamo un programma basato su questo.

pacchetto traffic enum TrafficSignal {RED ('STOP'), GREEN ('GO'), ORANGE ('WAIT') private String action public String getAction () {return this.action} private TrafficSignal (String action) {this.action = action}} public class Edureka {public static void main (String args []) {TrafficSignal [] signal = TrafficSignal.values ​​() for (TrafficSignal signal: signal) {System.out.println ('name:' + signal.name () + 'action:' + signal.getAction ())}}}

//Produzione:

nome: ROSSO azione: STOP
nome: VERDE azione: VIA
maschioe: ARANCIONE azione: ATTENDERE

Enum nelle istruzioni if-else-if

Ora, eseguiamo un programma basato su enum nelle istruzioni if-else-if. Qui troveremo la direzione di attraversamento passando i valori delle direzioni disponibili nell'enum.

pacchetto Directions enum Directions {EAST, WEST, NORTH, SOUTH} public class Edureka {public static void main (String args []) {Directions dir = Directions.NORTH if (dir == Directions.EAST) {System.out.println ( 'Direction: East')} else if (dir == Directions.WEST) {System.out.println ('Direction: West')} else if (dir == Directions.NORTH) {System.out.println ('Direction : North ')} else {System.out.println (' Direction: South ')}}}

//Produzione:

Direazione: Nord

Diversi metodi utilizzati con enum

Valori(): Quando crei un'enumerazione, il Compilatore Java aggiunge internamente il file valori() metodo. Questo metodo restituisce un file Vettore contenente tutti i valori dell'enumerazione.

//Sintassi:

public static enum-type [] values ​​()

Scopriremo il valore di indice di un particolare elemento in un array.

valori del pacchetto enum Color {RED, GREEN, BLUE} public class Edureka {public static void main (String [] args) {Color arr [] = Color.values ​​() for (Color col: arr) {System.out.println ( col + 'at index' + col.ordinal ())} System.out.println (Color.valueOf ('RED'))}}

//Produzione:

come utilizzare il browser sqlite

ROSSO all'indice 0
VERDE all'indice 1
BLU all'indice 2
NETTO

Valore di(): Questoviene utilizzato per restituire la costante di enumerazione il cui valore è uguale a passato come argomento durante la chiamata a questo metodo.

//Sintassi:

public static enum-type valueOf (String str)

Qui troveremo il costo di un determinato telefono in base all'input che passiamo alla stringa.

valori del pacchetto di enum Mobile {Samsung (1099), Apple (1250), Google (1325) int price Mobile (int p) {price = p} int showPrice () {return price}} public class Edureka {public static void main (String args []) {System.out.println ('CellPhone List:') per (Mobile m: Mobile.values ​​()) {System.out.println (m + 'cost' + m.showPrice () + 'dollari' )} Mobile ret ret = Mobile.valueOf ('Samsung') System.out.println ('Selected:' + ret)}}

//Produzione:

Samsung costa 1099 dollari
Apple costa 1250 dollari
Google costa 1325 dollari
Selezionato: Samsung

Ordinale(): L'interprete Java aggiunge l'estensione ordinale() internamente quando crea un file enum. Il metodo ordinal () restituisce il indice del valore enum.

//Sintassi:

public final int ordinal ()

Qui scopriremo il valore di indice di un particolare elemento in un array. e anche la posizione del frutto della ciliegia.

Package ordinal enum Fruits {Apple, Banana, Cherry, Date, Elderberry} enum Vegetables {Carot, Beetroot, Beans, Tomato, Onion} public class Edureka {public static void main (String [] args) {Fruits [] fru = Fruits. valori () per (Fruits fr: fru) {System.out.println (fr + ':' + fr.ordinal ())} Fruits f1, f2, f3 f1 = Fruits.Apple f2 = Fruits.Cherry f3 = Fruits.Apple if (f2.compareTo (f1)> 0) {System.out.println (f2 + 'viene dopo' + f1)} Vegetables v1 = Vegetables.Beetroot if (f1.equals (v1)) {System.out.println (' Errato ')}}}

//Produzione:

Mela: 0
Banana: 1
Ciliegia: 2
Data: 3
Sambuco: 4
Cherry viene dopo Apple

Vantaggi di Enum

  • Enum in Java migliora tipo di sicurezza
  • Enum è progettato per essere facilmente utilizzabile in cambiare i casi
  • Enum può essere attraversato
  • Enum può avere campi, metodi, e costruttori
  • Enum può implementare interfacce
  • Enum non può estendere a classe perché internamente si estende Enum classe

Enum Usecase: Rock, Paper, Scissors Game

Noi useremo enum in Java per creare il nostro gioco d'infanzia, la carta di roccia (pietra) e le forbici . Il codice seguente spiega come.

pacchetto Edureka import java.util.Random import java.util.Scanner enum HandSign {SCISSOR, PAPER, STONE} public class SPS {public static void main (String [] args) {Random random = new Random () boolean gameOver = false HandSign playerMove = HandSign.SCISSOR HandSign computerMove int numTrials = 0 int numComputerWon = 0 int numPlayerWon = 0 int numTie = 0 Scanner in = nuovo Scanner (System.in) System.out.println ('nLet us begin ... n') while (! gameOver) {System.out.printf ('% nScissor-Paper-Stonen') booleano validInput do {System.out.print ('nYour turn (Inserire s per una forbice, p per carta, t per pietra, q per uscire): n ') char inChar = in.next (). toLowerCase (). charAt (0) validInput = true if (inChar ==' q ') {gameOver = true} else if (inChar ==' s ' ) {playerMove = HandSign.SCISSOR} else if (inChar == 'p') {playerMove = HandSign.PAPER} else if (inChar == 't') {playerMove = HandSign.STONE} else {System.out.println ( 'nPer favore controlla l'input e riprova! n') validInput = false}} while (! val idInput) if (! gameOver) {int aRandomNumber = random.nextInt (3) if (aRandomNumber == 0) {computerMove = HandSign.SCISSOR System.out.println ('nIt's My turn: SCISSORn')} else if (aRandomNumber = = 0) {computerMove = HandSign.PAPER System.out.println ('nIt's My turn: PAPERn')} else {computerMove = HandSign.STONE System.out.println ('nIt's My turn: STONEn')} if (computerMove = = playerMove) {System.out.println ('nIt's a Tie! n') ++ numTie} else if (computerMove == HandSign.SCISSOR & amp & amp playerMove == HandSign.PAPER) {System.out.println ('nScissor taglia la carta , Ho vinto! N ') ++ numComputerWon} altrimenti se (computerMove == HandSign.PAPER & amp & amp playerMove == HandSign.STONE) {System.out.println (' nPaper wraps stone, I won! N ') ++ numComputerWon} else if (computerMove == HandSign.STONE & amp & amp playerMove == HandSign.SCISSOR) {System.out.println ('nStone rompe le forbici, ho vinto! n') ++ numComputerWon} else {System.out.println ('nCongratulations. ..! Hai vinto! N ') ++ numPlayerWon} ++ numTrials}} System.out.printf ('% nIl numero di prove: '+ numTrials) System.out.printf (' Ho vinto% d (%. 2f %%) . Hai vinto% d (%. 2f %%).% N ', numComputerWon, 100.0 * numComputerWon / numTrials, numPlayerWon, 100.0 * numPlayerWon / numTrials) System.out.println (' Ciao !, Spero ti sia piaciuto ..! ' )}}

//Produzione:

Cominciamo...
Scissor-Paper-Stone
Il tuo turno (inserisci s per una forbice, p per carta, t per pietra, q per uscire):
S
È il mio turno: STONE
La pietra rompe le forbici, ho vinto!
Scissor-Paper-Stone
Il tuo turno (inserisci s per una forbice, p per carta, t per pietra, q per uscire):
che cosa
Il numero di prove: 1 ho vinto 1 (100,00%). Hai vinto 0 (0,00%).
Ciao! Spero ti sia piaciuto ..!

Con questo, arriviamo alla fine di questo tutorial Java Enum. Spero che abbiate compreso Enum in Java e la sua implementazione attraverso alcuni esempi in tempo reale.

Ora che hai capito enum basi attraverso questo 'Java Enum Tutorial' controlla il da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo. I corsi di formazione e certificazione Java J2EE e SOA di Edureka sono progettati per studenti e professionisti che desiderano diventare sviluppatori Java. Il corso è progettato per darti un vantaggio nella programmazione Java e formarti per concetti Java sia di base che avanzati insieme a vari framework Java come Hibernate & Primavera .

Hai domande per noi? Menzionalo nella sezione commenti di questo blog 'Java Enum Tutorial' e ti risponderemo il prima possibile.