Tutorial Java Enum: Ce este și cum să-l implementez?

Acest articol despre Java Enum Tutorial vă va oferi o cunoaștere detaliată a constantelor Enum, împreună cu exemple practice pentru o mai bună înțelegere.

Enumerare în este un mod de a defini o clasă cu constante fixe și numite cu respectivele lor folosind cuvântul cheie enum. In acest ' Tutorial Java Enum ”Articol, vom învăța sădefiniți Enumerare împreună cuexemple pentru o mai bună înțelegere.

Ce este Enumerarea?

Java Enums sunt clase care au un set fix de constante sau variabile care nu tind să se schimbe. Enumerarea în Java se realizează folosind cuvântul cheie enum. Java enum constantele sunt static și final implicit. Funcția Enum este disponibilă de atunci JDK versiunea 1.5.





De ce avem nevoie de enumerare?

enum îmbunătățește siguranța tipului la verificarea timpului de compilare pentru a evita erorile în timpul rulării, evitând codul plăcii centrale. De exemplu, dacă trebuie să selectați o posibilitate din cel mai mic număr de opțiuni disponibile, spuneți,

Loc de munca Tip: (Contracta / Temporar / Permanent)



Angajat tutorial Java enum

Atunci cea mai bună opțiune ar fi utilizarea unui enum. pentru că enum poate fi ușor utilizat în comutator. enum poate fi parcurs. enum poate sa avea domenii, constructori și metode. Prin urmare, crește verificarea timpului de compilare și evită erorile datorate trecerii în constante nevalide, deoarece ați documentat deja care sunt valorile legale care trebuie utilizate.

ce este o matrice dinamică

Diferențe între Enum și Clasă

Deși o clasă și o enum au funcționalități similare în mediul Java, ele diferă în câteva aspecte. Să discutăm diferențele



Enum Clasă
Constantele enum nu pot fi anulateConstantele de clasă pot fi anulate
Enum nu acceptă crearea de obiecteClasa sprijină crearea obiectelor
Enum nu poate extinde alte claseO clasă poate extinde alte clase
enum co interfață de implementareO clasă poate implementa interfața


Exemple practice de Enum

Acum, pentru a înțelege enum într-un mod mult mai bun, haideți să executăm câteva exemple practice bazate pe următoarele.

Definirea enumerării în Java

Enum poate fi declarat fie în cadrul unei clase, fie în afara unui clăsa. Dar nu poate fi declarat în cadrul niciunei metode. Să luăm un mic exemplu pentru a-i înțelege sintaxa, definiția și declarația.

Sintaxă:

nume enum {constante}

În acest exemplu, am declarat principal() metodă interior enum

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

// Ouput

KTM

În acest exemplu, principal() este declarată metoda in afara de enum.

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

// Ieșire:

YAMAHA

Enum folosit în Switch Case

Enumerarea poate fi utilizată și într-o instrucțiune switch. Este important ca toate instrucțiunile de caz să utilizeze constante din aceeași enum ca și cea folosită de instrucțiunea switch. Să verificăm un exemplu bazat pe acest lucru.

Aici, vom declara o enumere cu zile ale săptămânii ca elemente și vom transmite datele sub forma unui șir pentru a imprima datele cazului de potrivire.

pachet comutat enum Ziua {DUMINICI, LUNI, MARȚI, MIERCURI, JOI, VINERI, SĂMĂTĂ} public class Edureka {Day day public Edureka (Day day) {this.day = day} public void dayIsLike () {switch (day) {case LUNI: System.out.println („Bună, astăzi este luni”) caz de pauză MARȚI: System.out.println („Bună ziua, astăzi este marți”) caz de pauză MIERCURI: System.out.println („Bună, azi este miercuri ') break case JOI: System.out.println (' Bună ziua, azi este joi ') break case VINERI: System.out.println (' Bună ziua, azi este vineri. ') break case SATURDAY: System.out.println (' Bună ziua, astăzi este cazul tău de sfârșit de săptămână ') DUMINICĂ: System.out.println (' Bună ziua, astăzi este o sărbătoare ') pauză implicită: System.out.println (' Vă rugăm să introduceți o zi validă. ') Pauză}} public static void main (String [] args) {String str = 'MONDAY' Edureka e1 = new Edureka (Day.valueOf (str)) e1.dayIsLike ()}}

// Ieșire:

Bună, Azi esteluni

Moștenirea folosind enum

Practic, oricare enum este reprezentat ca o clasă care extinde clasa abstractă java.lang. Enum și are mai mulți membri statici. Prin urmare, un enum nu poate extinde nicio altă clasă sau enum nu există multiplu moșteniri . Să executăm un exemplu pentru a-l înțelege într-un mod mai bun.

Aici, vom moșteni sistemul de operare bazat pe producătorul de telefoane.

conversie java dublu la int
import pachet mostenire 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) pentru (HTTPMethodConvertible element: inherit) {System.out.println (element.getHTTPMethodType ())}} interfață statică HTTPMethodConvertible {public String getHTTPMethodType ()} static enum LibraryEnum implementează HTTPMethodConvertible {FIRST ('Google Pixel'), SECOND ('Google Pixel'), SECOND ( „Huawei”), TREI ((Apple 11 Pro)) Șir httpMethodType LibraryEnum (String phone) {httpMethodType = phone} public String getHTTPMethodType () {return httpMethodType}} enum static ClientEnum implementează HTTPMethodConvertible {huawei ('HongMing OS') („iOS”), google („Android One”) Șir httpMethodType ClientEnum (String s) {httpMethodType = s} public String getHTTPMethodType () {return httpMethodType}}}

// Ieșire:

Google Pixel
Android One

Enumerați cu valori personalizate

Enumurile au propriile valori ale șirurilor în mod implicit, putem atribui, de asemenea, unele valori personalizate enumurilor. Să luăm în considerare exemplul de mai jos.

enum Trafic {RED („STOP”), ORANGE („WAIT”), VERDE („GO”)}

În exemplul de mai sus, putem vedea că Enumeri de trafic au trei membri. Și anume,

PORTOCALA ROSIE și VERDE cu au propriile lor valori personalizate diferite STOP, AȘTEPTĂ și MERGE respectiv.

Acum, pentru a utiliza același tip de enum în cod, este de așteptat să urmăm câteva puncte care sunt:

  • Trebuie să creăm constructor parametrizat pentru această clasă enum. Pentru că știm asta enum obiectul clasei nu poate fi creat în mod explicit, așa că pentru inițializare folosim un constructor parametrizat.
  • constructor nu poate fi publicul sau protejat pe care trebuie să îl aibă privat sau Mod implicit modificatori. Dacă creăm public sau protejat, va permite inițializarea mai multor obiecte care sunt total împotrivă funcționalitate enum.
  • Trebuie să creăm o metodă getter pentru a obține valoarea enumere.

Să executăm un program bazat pe acest lucru.

pachet trafic 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 [] signals = TrafficSignal.values ​​() for (TrafficSignal signal: signals) {System.out.println ('name:' + signal.name () + 'acțiune:' + signal.getAction ())}}}

// Ieșire:

nume: RED acțiune: STOP
nume: VERZ acțiune: GO
masculine: Acțiune ORANGE: AȘTEPTĂ

Enumerați în declarații if-else-if

Acum, haideți să executăm un program bazat pe enum în afirmații if-else-if. Aici, vom găsi direcția de traversare prin trecerea valorilor direcțiilor disponibile în enum.

pachet Direcții enum Direcții {EST, VEST, NORD, SUD} 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 ')}}}

// Ieșire:

Spunection: Nord

Diferite metode utilizate cu enum

Valori (): Când creați o enumere, Compilator Java adaugă intern valori () metodă. Această metodă returnează un matrice conținând toate valorile enumului.

//Sintaxă:

public static enum-type [] valori ()

Vom afla valoarea indexului unui anumit element dintr-o matrice.

valorile pachetului 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 + 'la index' + col.ordinal ())} System.out.println (Color.valueOf ('RED'))}}

// Ieșire:

ROȘU la indicele 0
VERDE la indexul 1
ALBASTRU la indexul 2
NET

Valoarea(): Acestmetoda este utilizată pentru a returna constanta de enumerare a cărei valoare este egală cu a trecut ca argument în timp ce se apelează această metodă.

//Sintaxă:

public static enum-type valueOf (String str)

Aici, vom găsi costul unui anumit telefon pe baza intrării pe care o transmitem șirului.

valorile pachetului 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:') for (Mobile m: Mobile.values ​​()) {System.out.println (m + 'costs' + m.showPrice () + 'dollars' )} Mobile ret ret = Mobile.valueOf ('Samsung') System.out.println ('Selected:' + ret)}}

// Ieșire:

Samsung costă 1099 de dolari
Apple costă 1250 de dolari
Google costă 1325 de dolari
Selectat: Samsung

ce este jit in java

Ordinal(): Interpretul Java adaugă ordinal() metoda internă atunci când creează un enum. Metoda ordinal () returnează index a valorii enum.

//Sintaxă:

public final int ordinal ()

Aici, vom afla valoarea indexului unui anumit element dintr-o matrice. și, de asemenea, poziția fructului de cireș.

Pachet Ordinal enum Fructe {Apple, Banana, Cherry, Date, Elderberry} enum Legume {Morcov, sfeclă roșie, fasole, roșie, ceapă} public class Edureka {public static void main (String [] args) {Fruits [] fru = Fruits. values ​​() for (Fructe fr: fru) {System.out.println (fr + ':' + fr.ordinal ())} Fructe f1, f2, f3 f1 = Fructe.Apple f2 = Fructe.Cherry f3 = Fructe.Apple if (f2.compareTo (f1)> 0) {System.out.println (f2 + 'vine după' + f1)} Legume v1 = Vegetables.Betetroot if (f1.equals (v1)) {System.out.println (' Incorect ')}}}

// Ieșire:

Măr: 0
Banana: 1
Cireș: 2
Data: 3
Bătrân: 4
Cireșul vine după Apple

Avantajele Enum

  • Enum în Java se îmbunătățește tip de siguranță
  • Enum este conceput pentru a fi ușor de utilizat în schimbă cazurile
  • Enum poate fi străbătut
  • Enum poate avea câmpuri, metode, și constructori
  • Enum poate implementa interfețe
  • Enum nu poate extinde a clasă deoarece pe plan intern se extinde Enum clasă

Enum Usecase: Joc de piatră, hârtie, foarfece

Noi vom folosi enum în Java pentru a crea jocul nostru din copilărie, hârtie de piatră (piatră) și foarfece . Următorul cod explică cum.

pachet 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 = Scanner nou (System.in) System.out.println ('nLet us begin ... n') while (! gameOver) {System.out.printf ('% nScissor-Paper-Stonen') boolean validInput do {System.out.print ('nTurnul tău (Vă rugăm să introduceți s pentru o foarfecă, p pentru hârtie, t pentru piatră, q to quit): 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 ( 'nVă rugăm să verificați intrarea și să încercați din nou! n') validInput = false}} în timp ce (! val idInput) if (! gameOver) {int aRandomNumber = random.nextInt (3) if (aRandomNumber == 0) {computerMove = HandSign.SCISSOR System.out.println ('nEste rândul meu: SCISSORn')} else if (aRandomNumber = = 0) {computerMove = HandSign.PAPER System.out.println ('nEste rândul meu: PAPERn')} else {computerMove = HandSign.STONE System.out.println ('nEste rândul meu: STONEn')} if (computerMove = = playerMove) {System.out.println ('nIt is a Tie! n') ++ numTie} else if (computerMove == HandSign.SCISSOR & amp & amp playerMove == HandSign.PAPER) {System.out.println ('nScissor tăie hârtie , Am câștigat! N ') ++ numComputerWon} else if (computerMove == HandSign.PAPER & amp & amp playerMove == HandSign.STONE) {System.out.println (' nPaper învelește piatra, am câștigat! N ') ++ numComputerWon} else if (computerMove == HandSign.STONE & amp & amp playerMove == HandSign.SCISSOR) {System.out.println ('nStone rupe foarfeca, am câștigat! n') ++ numComputerWon} else {System.out.println ('nCongratulations. ..! Ai câștigat! N ') ++ numPlayerWon} ++ numTrials}} System.out.printf ('% nNumărul de încercări: '+ numTrials) System.out.printf (' Am câștigat% d (%. 2f %%) . Ați câștigat% d (%. 2f %%).% N ', numComputerWon, 100.0 * numComputerWon / numTrials, numPlayerWon, 100.0 * numPlayerWon / numTrials) System.out.println (' Bye !, Sper că v-a plăcut ..! ' )}}

// Ieșire:

Sa incepem...
Foarfeca-hârtie-piatră
Rândul dvs. (Vă rugăm să introduceți s pentru o foarfecă, p pentru hârtie, t pentru piatră, q să renunțați):
s
Este rândul meu: PIATRA
Piatra rupe foarfeca, am câștigat!
Foarfeca-hârtie-piatră
Rândul dvs. (Vă rugăm să introduceți s pentru o foarfecă, p pentru hârtie, t pentru piatră, q să renunțați):
ce
Numărul de probe: 1 Am câștigat 1 (100,00%). Ai câștigat 0 (0,00%).
Pa, !, sper că ți-a plăcut ..!

Cu aceasta, ajungem la sfârșitul acestui tutorial Java Enum. Sper că ați înțeles Enum în Java și implementarea acestuia prin câteva exemple în timp real.

Acum că ai înțeles enum elementele de bază prin acest „Tutorial Java Enum” verificați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Cursurile de formare și certificare Java J2EE și SOA ale Edureka sunt concepute pentru studenți și profesioniști care doresc să fie Java Developer. Cursul este conceput pentru a vă oferi un început important în programarea Java și pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate, împreună cu diverse cadre Java, cum ar fi Hibernate și Primăvară .

Ai o întrebare pentru noi? Menționați-l în secțiunea de comentarii a acestui blog „Java Enum Tutorial” și vă vom contacta cât mai curând posibil.