java enum java enumeration tutorial with examples
Ta vadnica bo podrobneje opisala razred in konstruktor Java Enum. Naučili se bomo uporabljati Enum skozi različne primere programiranja Java:
To je poseben razred, katerega razlaga bo podrobno podana. Podan bo vpogled v razred Java Enum skupaj s seznamom metod, ki jih podpira.
Za lažje razumevanje je v tej vadnici vključenih dovolj programov, ki izvajajo koncepte Java enum, in nekaj pogostih vprašanj, ki jih lahko zastavite med intervjuji.
=> Tukaj si oglejte serijo Java Training Training for All.
Kaj se boste naučili:
Java Enumeration
Naštevanje Java ni nič drugega kot seznam spremenljivk, metod ali konstruktorjev primerkov. To je skupina konstant. Koncept štetja je bil uveden v JDK5. Privzeta lastnost vsake konstante naštevanja je javna, statična in končna.
ključna beseda enum
Število se ustvari z uporabo ključne besede, imenovane » enum '.
Spodaj je sintaksa, s katero lahko ustvarimo naštevanje.
Sintaksa:
enum enumerated_type_name
{
enumerator1, enumerator2, ... enumeratorN;
}
Opomba: enum je mogoče definirati samo znotraj razreda ali vmesnika najvišje ravni ali v statičnem kontekstu. Ne sme biti znotraj metode.
Primer enum
V tem primeru bomo inicializirali štiri preštevalce, to so pik, srce, diamant in klub, ki spadajo v oštevilčeni tip, imenovan kartice.
Nato bomo poskušali natisniti vsakega od teh števcev.
/* * 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); } }
Izhod:
Enum razred
Ena stvar, ki ste jo zagotovo opazili v zgornjem primeru (glej komentarje), je, da nismo uporabili »Nova ključna beseda« med instantiranjem. Čeprav oštevilčenja opredeljujejo razred Enum in tudi konstruktorje, ne uporabljajo nove ključne besede.
Oštevalnike lahko uporabimo na enak način kot primitiv. Enum je generični razred in vsa naštevanja podedujejo Enum.
Sintaksa:
// E je vrsta oštevilčenja.
razred Enum
Kako uporabljati Enum v Javi
Poglejmo, kako uporabiti Enum v različnih scenarijih s pomočjo primerov Java:
Znotraj razreda A
Enum je mogoče razglasiti znotraj ali zunaj (primer ključne besede enum) razreda, ne pa tudi znotraj metode. Tu bomo prikazali, kako je enum razglašen znotraj razreda.
V spodnjem primeru , znotraj razreda smo ustvarili enumeracijo in nato s pomočjo referenčne spremenljivke a1 pridobili vrednost ali enumerator.
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); } }
Izhod:
Ponavljanje Enum skozi zanke
Tukaj bomo razpravljali o tem, kako lahko preletimo enum. Število smo razglasili s štirimi preštevalci (zunaj razreda). Nato smo za vsako zanko (znotraj razreda) inicializirali in poskušali pridobiti vrednost števcev.
/* * 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); } } }
Izhod:
programska oprema, napisana v jeziku c ++
Če drugače
V spodnjem programu smo ustvarili naštevanje s tremi različnimi preštevalniki in ga nato shranili v referenčno spremenljivko za enega od podanih preštevalcev.
Nato smo začeli preverjati pogoj if, kjer smo izvedli dva pogoja, navedena z OR, tako da bo, če bo izpolnjen eden od teh pogojev, natisnil stavek, naveden v pogoju if.
V nasprotnem primeru bo natisnil stavek, naveden v pogoju 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'); } } }
Izhod:
V izjavi stikala
V spodnjem programu smo ustvarili naštevanje s štirimi preštevalci. Nato smo enega od števcev shranili v referenčno spremenljivko. Nato smo inicializirali stavek Switch in preverili vsakega od teh števcev.
Ob pojavu tega določenega števca bo natisnil stavek, določen v posameznem primeru.
/* * 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; } } }
Izhod:
Enum polje in metode
Enumsko polje
V tem razdelku bodo podrobno razložena polja za naštevanje. V enum Java lahko dodamo polja in vsak števec dobi ta polja. Vrednost polja je treba dodeliti konstruktorju naštevanja.
V spodnji sintaksi lahko vidimo, da je bilo oštevilčenje definirano s tremi števci. Poleg vsakega števca smo definirali polje tipa int. ( Npr. - (3), (2) oziroma (1)).
To pomeni, da ima Java enum konstruktor, ki sprejme int. Ta konstruktor nastavi polje int. Ko je števec definiran, se ta vrednost int (podana za tega števca) posreduje konstruktorju.
Sintaksa:
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; } }
Opomba: Na primer v polju Enum glejte razdelek » Konstruktor Enum '.
Metode naštevanja
# 1) ime ()
javno končno Ime niza () - Vrne ime priklicne konstante (nespremenjeno ali nespremenjeno).
# 2) je enako ()
public final boolean equals (Object other) - vrne true, če se obj in priklicni objekt nanašata na isto konstanto.
# 3) toString
public String toString () - Vrne ime priklicne konstante. Ni nujno, da se ujema z imenom, uporabljenim v izjavi naštevanja.
# 4) klon
zaščiten končni objektni klon ()
vrže CloneNotSupportedException - to pomeni, da bo enum pri poskusu kloniranja vrgel izjemo.
# 5) hashCode ()
public final int hashCode () - Vrne hash kodo predmeta, ki prikliče.
# 6) finalize ()
zaščiten final void finalize () - enum razred ne more imeti dokončanih metod. Ni vrnjene vrednosti.
# 7) compareTo ()
public final int compareTo (E obj) - Ta primerja enum z navedenim objektom obj. Vrne negativno, če je objekt manjši od navedenega predmeta. Vrne pozitivno, če je ta objekt večji od določenega predmeta obj, in vrne nič, če je navedeni obj enak temu objektu.
# 8) getDeclaringClass
javni končni razred getDeclaringClass () - Vrne tip oštevilčenja (znan tudi kot razred deklariranja enum), katerega član je konsolidacijska konstanta.
# 9) ordinal (), values () in valueOf ()
Vse te metode so del paketa java.lang.Enum . Metoda ordinal () vrne vrstni red števčne konstante na podlagi indeksa konstante.
Metoda values () vrne vse vrednosti, ki so prisotne v naštevanju. Metoda valueOf (String) vrne številsko konstanto vhodnega niza. Če se navedeni niz ne ujema s konstanto, bo vrgel IllegalArgumentException.
Spodaj je prikazan primer programiranja, kjer smo uporabili isti primer (kot primer ključne besede enum) in izvedli koncept vseh treh metod.
/* * 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')); } }
Izhod:
Konstruktor Enum
Enum (saj je tudi razred) podpira konstruktor za posredovanje podatkov med ustvarjanjem enumeratorjev ali znan tudi kot konstante enum.
Glavna lastnost konstruktorja enum je, da so zasebni ali zasebni paketi. To pomeni, da so dostopni znotraj razreda ali znotraj paketa.
Oglejmo si spodnji primer. Tu smo uporabili tako metodo kot konstruktor. Najprej smo ustvarili naštevanje z imenom »igralci«, ki ima pet preštevalcev in polje.
Nato imamo konstruktor in metodo, ki vrne število tekov, ki jih je dosegel vsak igralec ali števec ali enum konstanta.
Nato imamo glavni razred, v katerem smo za vsako zanko uporabili metodo values () za shranjevanje in ponavljanje vsakega števca. Prav tako smo imenovali metodo za število tekov, ki jih je dosegel vsak igralec.
/* * 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'); } }
Izhod:
Pogosto zastavljena vprašanja
V # 1) Kakšna je razlika med Iteratorjem in Enumeracijo v Javi?
Odgovor: Spodaj je navedena razlika med Iteratorjem in Enumeracijo.
Iterator | Naštevanje |
---|---|
Je splošni kazalec, ki se uporablja za ponavljanje elementov in je uporaben za ves razred zbirke. | To ni splošni kazalec, ker se uporablja samo za starejše razrede, kot je Enum. Dovoli za branje samo za predavanja zbirke |
Nekatere metode so za ponovitev hasNext (), next (). | Nekatere metode so hasMoreElements (), nextElement () za ponovitev. |
Element v zbirki lahko odstranimo s pomočjo iteratorja. | Elementa iz zbirke ne moremo odstraniti s pomočjo Enumeration, ker ima le dovoljenje za branje. |
V # 2) Kako Enum podpira dedovanje?
Odgovor: Afterall Enum je tudi razred v Javi, zato mora podpirati dedovanje, ki je osnovno načelo OOPS. Vsa naštevanja razširjajo razred java.lang.Enum. Ker lahko razred razširi samo enega nadrejenega, razred Enum ne razširi nobenega drugega.
ToString (), ki je del razreda Enum (razloženo v odseku Enum Method), je v razredu java.lang.Enum razveljavljen.
Zaključek
V tej vadnici smo o ustreznih primerih in razlagah, kjer je to potrebno, razpravljali o naštevanju, števcih, razredu Java Enum in ključni besedi enum. Prav tako smo dali vpogled v pomembne metode, povezane z razredom Enum s poljem enum.
Zagotovljen je vpogled v konstruktor, enum z if-else, switch in zanke.
=> Obiščite tukaj, če se želite naučiti Jave iz nič.
Priporočeno branje
- Vadnica razreda Java Scanner Class z primeri
- Java Integer in Java BigInteger Class z primeri
- Vadnica Java Float s primeri programiranja
- Kaj je Java Vector | Vadnica Java Vector Class s primeri
- TreeMap v Javi - Vadnica z primeri Java TreeMap
- Dvojna vadnica Java s primeri programiranja
- Vadnica razreda Java Array - java.util.Arrays Class s primeri
- Koncepti C #: konstruktor, destruktor, statični razred, struktura in enum