java enum java enumeration tutorial with examples
Acest tutorial va dezvolta clasa și constructorul Java Enum. Vom învăța cum să folosim Enum prin diferite exemple de programare Java:
Aceasta este o clasă specială a cărei explicație va fi furnizată în detaliu. O perspectivă asupra clasei Java Enum va fi dată împreună cu lista metodelor pe care le acceptă.
În acest tutorial sunt incluse suficiente programe care implementează conceptele Java enum și câteva întrebări frecvente care pot fi adresate în timpul interviurilor.
=> Verificați aici pentru a vedea seria de antrenament Java pentru toți.
Ce veți învăța:
Enumerare Java
O enumerare Java nu este altceva decât o listă de variabile de instanță, metode sau constructori. Acestea sunt un grup de constante. Conceptul de enumerare a fost introdus în JDK5. Proprietatea implicită a fiecărei constante de enumerare este publică, statică și finală.
enum Cuvânt cheie
Enumerarea este creată utilizând un cuvânt cheie numit „ enum ”.
Dat mai jos este sintaxa cu care putem crea o enumerare.
Sintaxă:
enum enumerated_type_name
{
enumerator1, enumerator2, ... enumeratorN;
}
Notă: enum poate fi definit doar într-o clasă sau o interfață de nivel superior sau într-un context static. Nu ar trebui să se afle în interiorul unei metode.
enum Exemplu
În acest exemplu, vom inițializa patru enumeratoare, adică pică, inimă, diamant și baston aparținând unui tip enumerat numit cărți.
Apoi, vom încerca să imprimăm fiecare dintre acești enumeratori.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1,a2,a3,a4 respectively. * note that the new keyword was not used here */ cards a1 = cards.spade; cards a2 = cards.club; cards a3 = cards.heart; cards a4 = cards.diamond; System.out.println('Enumerators are: '+ a1 + ',' + a2 + ',' + a3 + ',' + a4); } }
Ieșire:
Clasa Enum
Un lucru pe care trebuie să-l fi observat în exemplul de mai sus (vezi comentariile) este că nu am folosit un „Cuvânt cheie nou” în timp ce instantaneează. Deși enumerările definesc o clasă Enum și constructorii, de asemenea, nu folosesc un cuvânt cheie nou.
Putem folosi enumeratoarele definite în același mod ca și primitivul. Enum este o clasă generică și toate enumerările moștenesc Enum.
Sintaxă:
// E este tipul de enumerare.
clasa Enum
Cum se folosește Enum în Java
Să vedem cum să folosim Enum în diferite scenarii cu ajutorul exemplelor Java:
În interiorul unei clase
Enum poate fi declarat în interior sau în exterior (exemplu de cuvânt cheie enum) o clasă, dar nu în interiorul unei metode. Aici, vom demonstra modul în care enum este declarat în cadrul unei clase.
În exemplul de mai jos , am creat o enumerare în interiorul unei clase și apoi am preluat valoarea sau enumeratorul cu ajutorul unei variabile de referință a1.
public class A { /* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1. * note that the new keyword was not used here */ cards a1 = cards.heart; System.out.println('Card is: '+ a1); } }
Ieșire:
Iterarea Enum-ului prin bucle
Aici, vom discuta despre modul în care putem parcurge o enum. Am declarat enumerarea cu patru enumeratori (în afara unei clase). Apoi am inițializat o pentru fiecare buclă (în interiorul unei clase) și am încercat să aducem valoarea enumeratoarelor.
/* * created an enumeration called games * with four enumerators. */ enum games { ludo, Chess, Badminton, Cricket; } public class A { public static void main(String() args) { /* * used forEach loop and stored the value in 'index' * and printed the value of each enumerator */ System.out.println('Using for each loop'); for (games index:games.values()) { System.out.println(index); } } }
Ieșire:
deschideți un fișier apk în Windows
În if-else
În programul de mai jos, am creat o enumerare cu trei enumeratoare diferite și apoi am stocat enumeratorul în variabila de referință pentru unul dintre enumeratoarele specificate.
Apoi am început verificarea condiției if în care am implementat două condiții specificate cu SAU, astfel încât dacă una dintre aceste condiții este îndeplinită, atunci va imprima declarația specificată în condiția if.
În caz contrar, va imprima declarația specificată în condiția else.
/* * created an enumeration called players * with three enumerators. */ enum players { sachin, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dhoni */ players a1 = players.dhoni; /* * Started if statement with OR condition. * If any of these conditions are met then it will * print the statement specified inside if statement */ if(a1 == players.virat || a1 == players.sachin) { System.out.println('Sachin and Virat are greatest batsmen'); } /* * if none of the above condition is met then it will * print the below specified statement */ else { System.out.println('Dhoni is the best Captain'); } } }
Ieșire:
În declarația de comutare
În programul de mai jos, am creat o enumerare cu patru enumeratoare. Apoi, am stocat unul dintre enumeratoare în variabila de referință. Ulterior, am inițializat o instrucțiune Switch și am verificat fiecare dintre acești enumeratori.
La apariția respectivului enumerator, acesta va imprima declarația specificată în cazul particular.
/* * created an enumeration called players * with four enumerators. */ enum players { sachin, dravid, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dravid */ players a1 = players.dravid; /* * Started Switch Statement and if the element * matches with a1 then it will print the statement * specified in the case */ switch(a1) { // does not match case sachin: System.out.println('Sachin is best bastman ever'); break; // matches case dravid: System.out.println('Dravid is the best Test Batsman'); break; // does not match case virat: System.out.println('Virat is modern great'); break; // does not match case dhoni: System.out.println('Dhoni is the best captain ever'); break; } } }
Ieșire:
Câmpul Enum și metodele
Câmpul Enum
Această secțiune va explica în detaliu câmpul enum. Putem adăuga câmpuri în enum Java și fiecare enumerator primește aceste câmpuri. Valoarea câmpului trebuie alocată constructorului enum.
În sintaxa de mai jos, putem vedea că a fost definită o enumerare cu trei enumeratoare. Alături de fiecare enumerator, am definit un câmp de tip int. ( De exemplu. - (3), (2) și respectiv (1)).
Aceasta însumează că Java enum are un constructor care ia un int. Acest constructor setează câmpul int. Când este definit un enumerator, atunci acea valoare int (specificată pentru respectivul enumerator) este transmisă constructorului.
Sintaxă:
public enum A { /* * calls a contructor with value * defined on the respective enumerator */ Enumerator1(3), Enumerator2(2), Enumerator3(1) /* * semicolon needed for the last enumerator * if there is a method following it. */ ; private final int constant; private A(int constant) { this.constant = constant; } }
Notă: De exemplu, în câmpul Enum, vă rugăm să consultați secțiunea „ Enum Constructor ”.
Metode Enum
# 1) nume ()
public final String name () - Returnează numele constantei invocatoare (neschimbată sau nealterată).
# 2) egal ()
public final boolean este egal (Obiect alt) - Returnează adevărat dacă obj și obiectul invocator se referă la aceeași constantă.
# 3) toString
public String toString () - Returnează numele constantei invocatoare. Nu se potrivește neapărat cu numele folosit în declarația de enumerare.
# 4) clonează
clonă de obiect final protejată ()
aruncă CloneNotSupportedException - Acest lucru înseamnă că enum va arunca o excepție atunci când va încerca să cloneze.
# 5) hashCode ()
public final int hashCode () - Returnează codul hash pentru obiectul care invocă.
# 6) finalize ()
protected final void finalize () - clasa enum nu poate avea metode finalizate. Fără valoare de returnare.
# 7) compareTo ()
public final int compareTo (E obj) - Aceasta compară enum-ul cu obiectul specificat obj. Revine negativ dacă obiectul este mai mic decât obiectul specificat. Revine pozitiv dacă acest obiect este mai mare decât obiectul obiect specificat și returnează zero dacă obiectul specificat este egal cu acest obiect.
# 8) getDeclaringClass
public final Class getDeclaringClass () - Returnează tipul de enumerare (cunoscut și sub denumirea de clasă enum) din care este invocantă constanta.
# 9) ordinal (), values () și valueOf ()
Toate aceste metode fac parte din pachet java.lang.Enum . Metoda ordinal () returnează ordinea constantei de enumerare pe baza indexului constantei.
Metoda values () returnează toate valorile prezente în enumerare. Metoda valueOf (String) returnează constanta de enumerare a șirului de intrare. Dacă șirul specificat nu se potrivește cu constanta, atunci va arunca IllegalArgumentException.
Mai jos este exemplul de programare în care am folosit același exemplu (ca exemplu de cuvânt cheie enum) și am implementat conceptul tuturor celor trei metode.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * created an array arr() which will store the * value of the constants/enumerators declared in the enumeration */ cards arr() = cards.values(); /* * used forEach loop and stored the value in 'type' * and printed the value as well as index with the help of * ordinal() method */ for (cards type:arr) { System.out.println(type + ' occurs at ' + type.ordinal()); } /* * passed heart as an input String which matches with the * constant declared in 'cards' */ System.out.println(cards.valueOf('heart')); } }
Ieșire:
Enum Constructor
Enum (deoarece este, de asemenea, o clasă) sprijină constructorul pentru a transmite date în timpul creării enumeratorilor sau, de asemenea, cunoscut sub numele de constante enum.
Proprietatea principală a unui constructor enum este că acestea sunt private sau private-package. Aceasta înseamnă că fie sunt accesibile în cadrul unei clase, fie în cadrul unui pachet.
Să vedem exemplul de mai jos. Aici am folosit atât metoda, cât și constructorul. În primul rând, am creat o enumerare numită „jucători” care are cinci enumeratori și câmpul.
Apoi, avem un constructor și o metodă care va returna numărul de runde marcate de fiecare jucător sau enumerator sau constantă enum.
Ulterior, avem clasa principală în care am folosit pentru fiecare buclă cu metoda values () pentru a stoca și a itera fiecare enumerator. De asemenea, am apelat la metoda numărului de alergări marcate de fiecare jucător.
/* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; /* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; players(int r) { runs = r; } int getRuns() { return runs; } } /* * Used values() method to get the enumerators and a for each loop * to get the number of runs scored by each player */ public class A { public static void main(String args()) { for (players a : players.values()) System.out.println(a + ' has scored ' + a.getRuns() + ' ODI runs'); } }
Ieșire:
întrebări frecvente
Q # 1) Care este diferența dintre Iterator și Enumerare în Java?
Răspuns: Dat mai jos este diferența dintre Iterator și Enumerare.
Iterator | Enumerare |
---|---|
Este un cursor generic care este folosit pentru a itera elemente și este aplicabil pentru toată clasa de colecție. | Nu este un cursor generic, deoarece este aplicabil doar claselor vechi, cum ar fi Enum. Permiteți citirea numai pentru o clasă de colecție. |
Unele dintre metode sunt hasNext (), next () pentru iterație. | Unele dintre metode sunt hasMoreElements (), nextElement () pentru iterație. |
Putem elimina elementul dintr-o colecție folosind iteratorul. | Nu putem elimina elementul dintr-o colecție folosind Enumerare, deoarece are doar permisiunea de citire. |
Q # 2) Cum acceptă Enum Moștenirea?
Răspuns: Afterall Enum este, de asemenea, o clasă în Java, deci trebuie să susțină Moștenirea, care este un principiu de bază al OOPS. Toate enumerările extind clasa java.lang.Enum. Deoarece o clasă poate extinde doar un singur părinte, clasa Enum nu extinde niciun alt.
ToString () care face parte din clasa Enum (explicată în secțiunea Metodă Enum) este suprascrisă în clasa java.lang.Enum.
Concluzie
În acest tutorial, am discutat enumerările, enumeratoarele, clasa Java Enum și cuvântul cheie enum cu exemple și explicații adecvate ori de câte ori este necesar. De asemenea, am dat o perspectivă asupra metodelor importante asociate cu clasa Enum cu câmpul enum.
Au fost furnizate o perspectivă asupra constructorului, enum cu if-else, switch și bucle.
=> Vizitați aici pentru a afla Java de la zero.
Lectură recomandată
- Tutorial de curs Java Scanner cu exemple
- Java Integer și Java BigInteger Class cu exemple
- Tutorial Java Float cu exemple de programare
- Ce este Java Vector | Tutorial Java Vector Class cu exemple
- TreeMap în Java - Tutorial cu exemple de TreeMap Java
- Java Double - Tutorial cu exemple de programare
- Tutorial Java Array Class - java.util.Arrays Class cu exemple
- C # Concepte: Constructor, Destructor, Clasă statică, Struct & Enum