java enum java enumeration tutorial with examples
Ovaj će vodič detaljno objasniti klasu i konstruktor Java Enum. Naučit ćemo kako koristiti Enum kroz razne primjere Java programiranja:
Ovo je posebna klasa čije će objašnjenje biti detaljno dato. Dat će se uvid u klasu Java Enum zajedno s popisom metoda koje ona podržava.
Dovoljno programa koji implementiraju koncepte Java enum i neka često postavljana pitanja koja se mogu postaviti tijekom intervjua uključeni su u ovaj vodič za vaše lakše razumijevanje.
=> Ovdje pogledajte kako biste vidjeli seriju Java treninga za sve.
Što ćete naučiti:
Java nabrajanje
Java nabrajanje nije ništa drugo doli popis varijabli, metoda ili konstruktora. To je skupina konstanti. Koncept popisivanja uveden je u JDK5. Zadano svojstvo svake konstante nabrajanja je javno, statično i konačno.
enum Ključna riječ
Popis se kreira pomoću ključne riječi pod nazivom „ nabrajanje '.
Slijedeća je sintaksa pomoću koje možemo stvoriti nabrajanje.
Sintaksa:
enum enumerated_type_name
{
enumerator1, enumerator2,… enumeratorN;
}
Bilješka: enum se može definirati samo unutar klase najviše razine ili sučelja ili u statičkom kontekstu. Ne bi trebalo biti unutar metode.
Primjer nabrajanja
U ovom ćemo primjeru inicijalizirati četiri popisivača, tj. Pik, srce, dijamant i klub koji pripadaju nabrojenom tipu koji se naziva karte.
Zatim ćemo pokušati ispisati svakog od ovih popisivača.
/* * 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); } }
Izlaz:
Enum klasa
Jedno što ste sigurno primijetili u gornjem primjeru (vidi komentare) jest da nismo koristili a 'Nova ključna riječ' dok instanciranje. Iako enumeracije definiraju klasu Enum i konstruktore, oni ne koriste novu ključnu riječ.
Popisivače možemo koristiti na isti način kao i primitiv. Enum je generička klasa i sve enumeracije nasljeđuju Enum.
Sintaksa:
// E je tip nabrajanja.
razred Enum
Kako koristiti Enum u Javi
Pogledajmo kako koristiti Enum u raznim scenarijima uz pomoć Java primjera:
Unutar A klase
Enum se može deklarirati unutar ili izvan (primjer ključne riječi enum) klase, ali ne unutar metode. Ovdje ćemo pokazati kako se enum deklarira unutar klase.
U donjem primjeru , stvorili smo nabrajanje unutar klase, a zatim smo dohvatili vrijednost ili popisivač uz pomoć referentne varijable 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); } }
Izlaz:
Ponavljanje nabrajanja kroz petlje
Ovdje ćemo razgovarati o tome kako se možemo provući kroz enum. Proglasili smo popisivanje s četiri popisivača (izvan klase). Tada smo inicijalizirali a za svaku petlju (unutar klase) i pokušali dohvatiti vrijednost popisivača.
/* * 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); } } }
Izlaz:
besplatna provjera gramatike bolja od gramatike
U ako-drugo
U donjem programu stvorili smo nabrajanje s tri različita popisivača, a zatim smo popisivač spremili u referentnu varijablu za jednog od navedenih popisivača.
Tada smo započeli provjeru uvjeta if, gdje smo implementirali dva uvjeta navedena s OR, tako da će, ako je jedan od tih uvjeta zadovoljen, ispisati izjavu navedenu u uvjetu if.
U suprotnom, ispisat će izjavu navedenu u uvjetu 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'); } } }
Izlaz:
U Izjavi prekidača
U donjem programu stvorili smo nabrajanje s četiri popisivača. Zatim smo jedan od popisivača spremili u referentnu varijablu. Nakon toga inicijalizirali smo naredbu Switch i provjerili svaki od ovih popisivača.
Nakon pojave tog određenog popisivača, ispisat će izjavu navedenu u određenom slučaju.
/* * 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; } } }
Izlaz:
Enum polje i metode
Enumsko polje
Ovaj će odjeljak detaljno objasniti polje nabrajanja. Možemo dodati polja Java nabrajanju i svaki popisivač dobije ta polja. Vrijednost polja treba dodijeliti konstruktoru nabrajanja.
U donjoj sintaksi možemo vidjeti da je popisivanje definirano s tri popisivača. Pored svakog popisivača definirali smo polje tipa int. ( Npr. - (3), (2) odnosno (1)).
To sumira da Java enum ima konstruktor koji uzima int. Ovaj konstruktor postavlja polje int. Kad je popisivač definiran, tada se ta vrijednost int (navedena za taj popisivač) prenosi konstruktoru.
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; } }
Bilješka: Na primjer, na polju Enum, pogledajte odjeljak “ Konstruktor enuma '.
Enum metode
# 1) ime ()
javni konačni Ime niza () - Vraća ime dozivajuće konstante (nepromijenjeno ili nepromijenjeno).
# 2) jednako ()
public final boolean equals (Object other) - Vraća true ako se obj i pozivni objekt odnose na istu konstantu.
# 3) toString
javni String toString () - Vraća ime pozivne konstante. Ne podudara se nužno s imenom korištenim u deklaraciji popisa.
# 4) klon
zaštićeni završni objektni klon ()
baca CloneNotSupportedException - To znači da će enum izbaciti iznimku kada se pokuša klonirati.
# 5) hashCode ()
javni konačni int hashCode () - Vraća hash kôd za objekt koji poziva.
# 6) finalize ()
zaštićena konačna praznina finalize () - klasa enum ne može imati finalizirane metode. Nema povratne vrijednosti.
# 7) compareTo ()
javni konačni int compareTo (E obj) - Ovo uspoređuje nabrajanje s navedenim objektom obj. Vraća negativno ako je objekt manji od navedenog objekta. Vraća pozitivno ako je ovaj objekt veći od navedenog objekta obj i vraća nulu ako je navedeni obj jednak ovom objektu.
# 8) getDeclaringClass
javna konačna klasa getDeclaringClass () - Vraća tip nabrajanja (poznat i kao klasa deklariranja nabrajanja) čiji je član konstanta poziva.
# 9) ordinal (), values () i valueOf ()
Sve ove metode dio su paketa java.lang.Enum . Metoda ordinal () vraća redoslijed konstante nabrajanja na temelju indeksa konstante.
Metoda values () vraća sve vrijednosti prisutne u nabrajanju. Metoda valueOf (String) vraća konstantu nabrajanja ulaznog Stringa. Ako se navedeni niz ne podudara sa konstantom, on će baciti IllegalArgumentException.
Dolje je dan primjer programiranja gdje smo koristili isti primjer (kao primjer ključne riječi enum) i implementirali koncept sve tri 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')); } }
Izlaz:
Konstruktor Enum
Enum (jer je ujedno i klasa) podržava konstruktor za prosljeđivanje podataka tijekom stvaranja popisivača ili poznat i kao enum konstante.
Glavno svojstvo enum konstruktora je da su privatni ili private-package. To znači da su im dostupni unutar klase ili unutar paketa.
Pogledajmo primjer u nastavku. Ovdje smo se koristili i tj. Metodom i konstruktorom. Prije svega, stvorili smo popis s imenom „igrači“ koji ima pet popisivača i polje.
Zatim imamo konstruktor i metodu koja će vratiti broj izvršenih poteza od strane svakog igrača ili popisivača ili enum konstante.
Nakon toga imamo glavnu klasu u kojoj smo za svaku petlju koristili metodu values () za spremanje i ponavljanje svakog popisivača. Također, pozvali smo metodu za broj trčanja koje je postigao svaki igrač.
/* * 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'); } }
Izlaz:
Često postavljana pitanja
P # 1) Koja je razlika između Iteratora i Enumeracije u Javi?
Odgovor: Dolje je dana razlika između Iteratora i Enumeracije.
Iterator | Nabrajanje |
---|---|
To je generički pokazivač koji se koristi za ponavljanje elemenata i primjenjiv je na sve klase zbirke. | To nije generički pokazivač jer je primjenjiv samo na naslijeđene klase kao što je Enum. Dopustite čitanje samo za tečaj kolekcije. |
Neke su metode hasNext (), next () za iteraciju. | Neke od metoda su hasMoreElements (), nextElement () za iteraciju. |
Element u kolekciji možemo ukloniti pomoću iteratora. | Ne možemo ukloniti element iz zbirke pomoću Enumeration jer ima samo dopuštenje za čitanje. |
P # 2) Kako Enum podržava nasljeđivanje?
Odgovor: Afterall Enum je također klasa u Javi, tako da mora podržavati nasljeđivanje koje je osnovni princip OOPS-a. Sva nabrajanja proširuju klasu java.lang.Enum. Kako klasa može proširiti samo jednog roditelja, klasa Enum ne proširuje nijednu drugu.
ToString () koji je dio Enum klase (objašnjeno u odjeljku Enum metoda) poništava se u klasi java.lang.Enum.
Zaključak
U ovom uputstvu raspravljali smo o nabrajanjima, popisivačima, klasi Java Enum i ključnoj riječi enum s odgovarajućim primjerima i objašnjenjima gdje god je to potrebno. Također, dali smo uvid u važne metode povezane s Enum klasom s enum poljem.
Omogućen je uvid u konstruktor, enum s if-else, switch i petlje.
=> Posjetite ovdje da biste naučili Javu ispočetka.
Preporučena literatura
- Vodič za razred Java Scannera s primjerima
- Java Integer i Java BigInteger klasa s primjerima
- Vodič za Java Float s primjerima programiranja
- Što je Java Vector | Vodič za Java Vector Class s primjerima
- TreeMap u Javi - Vodič uz primjere Java TreeMap
- Dvostruki vodič za Java s primjerima programiranja
- Java Array Class Tutorial - java.util.Arrays Class s primjerima
- C # koncepti: konstruktor, destruktor, statička klasa, struktura i nabrajanje