java enum java enumeration tutorial with examples
Tento tutoriál sa bude zaoberať triedou a konštruktorom Java Enum. Naučíme sa, ako používať Enum prostredníctvom rôznych príkladov programovania v Jave:
Toto je špeciálna trieda, ktorej vysvetlenie bude poskytnuté podrobne. Poskytne sa prehľad o triede Java Enum spolu so zoznamom metód, ktoré podporuje.
Pre vaše ľahké pochopenie je v tejto príručke zahrnutý dostatok programov, ktoré implementujú koncepty Java enum, a niektoré často kladené otázky, ktoré môžu byť položené počas rozhovorov.
=> Skontrolujte tu, aby ste videli sériu školení Java pre všetkých.
Čo sa dozviete:
Výčet Java
Výčet Java nie je nič iné ako zoznam premenných inštancie, metód alebo konštruktorov. Toto je skupina konštánt. Koncept vymenovania bol predstavený v JDK5. Predvolená vlastnosť každej konštanty výčtu je verejná, statická a konečná.
enum Kľúčové slovo
Výpočet sa vytvára pomocou kľúčového slova s názvom „ enum “.
Ďalej je uvedená syntax, pomocou ktorej môžeme vytvoriť enumeráciu.
Syntax:
enum enumerated_type_name
{
enumerator1, enumerator2, ... enumeratorN;
}
Poznámka: enum je možné definovať iba vo vnútri triedy alebo rozhrania najvyššej úrovne alebo v statickom kontexte. Nemalo by to byť vo vnútri metódy.
enum Príklad
V tomto príklade inicializujeme štyri enumerátory, tj. Rýč, srdce, diamant a palicu patriace do vymenovaného typu, ktorý sa nazýva karty.
Potom sa pokúsime vytlačiť každý z týchto enumerátorov.
/* * 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); } }
Výkon:
Trieda Enum
Jedna vec, ktorú ste si určite všimli vo vyššie uvedenom príklade (pozri komentáre) je, že sme nepoužili a „Nové kľúčové slovo“ pri inštancii. Aj keď výčty definujú triedu Enum a tiež konštruktory, nepoužívajú nové kľúčové slovo.
Môžeme použiť enumerátory definované rovnako ako primitívne. Enum je generická trieda a všetky enumerácie dedia Enum.
Syntax:
// E je typ výčtu.
trieda Enum
Ako používať Enum v Jave
Pozrime sa, ako pomocou príkladov Java používať Enum v rôznych scenároch:
Vo vnútri triedy A.
Enum je možné deklarovať vnútri alebo mimo triedy (príklad kľúčového slova enum), nie však v rámci metódy. Tu ukážeme, ako je enum deklarovaný vo vnútri triedy.
V nasledujúcom príklade , vytvorili sme výčet vo vnútri triedy a potom sme načítali hodnotu alebo enumerátor pomocou referenčnej premennej 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); } }
Výkon:
Iterácia výčtu cez slučky
Tu si povieme, ako môžeme prechádzať enumom. Deklaráciu sme deklarovali štyrmi enumerátormi (mimo triedy). Potom sme inicializovali a pre každú slučku (vo vnútri triedy) a pokúsili sme sa načítať hodnotu enumerátorov.
/* * 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); } } }
Výkon:
implementácia hash tabuľky c ++
V prípade-iného
V nasledujúcom programe sme vytvorili enumeráciu s tromi rôznymi enumerátormi a potom sme enumerátor uložili do referenčnej premennej pre jeden zo zadaných enumerátorov.
Potom sme spustili kontrolu podmienky if, kde sme implementovali dve podmienky zadané pomocou OR, takže ak je splnená jedna z týchto podmienok, vypíše výpis uvedený v podmienke if.
V opačnom prípade vytlačí výpis uvedený v podmienke 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'); } } }
Výkon:
Vo vyhlásení o prepnutí
V nižšie uvedenom programe sme vytvorili výčet so štyrmi enumerátormi. Potom sme jeden z enumerátorov uložili do referenčnej premennej. Potom sme inicializovali príkaz Switch a skontrolovali každý z týchto enumerátorov.
Po výskyte daného konkrétneho enumerátora vytlačí výpis uvedený v konkrétnom prípade.
/* * 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; } } }
Výkon:
Enum pole a metódy
Enum Field
Táto časť podrobne vysvetlí pole enum. Môžeme pridať polia do výčtu Java a každý enumerátor dostane tieto polia. Hodnota poľa by mala byť priradená konštruktérovi výčtu.
V nasledujúcej syntaxi vidíme, že výčet bol definovaný pomocou troch enumerátorov. Vedľa každého enumerátora sme definovali pole typu int. ( Napr. - (3), (2) a (1)).
To znamená, že Java enum má konštruktor, ktorý berie int. Tento konštruktor nastavuje pole int. Keď je definovaný enumerátor, potom sa táto hodnota int (zadaná pre tento enumerátor) odovzdá konštruktoru.
Syntax:
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; } }
Poznámka: Napríklad v poli Výčet nájdete časť „ Enum konštruktor “.
Metódy Enum
# 1) meno ()
public final Názov reťazca () - Vráti názov vyvolávajúcej konštanty (nezmenené alebo nezmenené).
# 2) sa rovná ()
public final boolean equals (Object other) - Vráti hodnotu true, ak obj a vyvolávajúci objekt odkazujú na rovnakú konštantu.
# 3) toString
public String toString () - Vráti názov vyvolávacej konštanty. Nie nevyhnutne sa zhoduje s menom použitým v deklarácii výčtu.
# 4) klon
chránený konečný klon objektu ()
hodí CloneNotSupportedException - To znamená, že výčet pri pokuse o klonovanie vyvolá výnimku.
# 5) hashCode ()
public final int hashCode () - Vráti hash kód vyvolávajúceho objektu.
# 6) dokončiť ()
protected final void finalize () - trieda enum nemôže mať dokončené metódy. Žiadna návratová hodnota.
# 7) compareTo ()
public final int compareTo (E obj) - porovnáva sa enum so zadaným objektom obj. Ak je objekt menší ako zadaný objekt, vráti sa záporný. Vráti kladné, ak je tento objekt väčší ako zadaný objekt obj, a vráti nulu, ak sa zadaný obj rovná tomuto objektu.
# 8) getDeclaringClass
public final Class getDeclaringClass () - Vráti typ výčtu (tiež známy ako trieda deklarujúca enum), ktorého je vyvolávacia konštanta.
# 9) ordinal (), values () a valueOf ()
Všetky tieto metódy sú súčasťou balíka java.lang.Enum . Metóda ordinal () vracia poradie konštanty výčtu na základe indexu konštanty.
Metóda values () vracia všetky hodnoty prítomné vo výpočte. Metóda valueOf (String) vracia konštantu výčtu vstupného reťazca. Ak zadaný reťazec nie je v zhode s konštantou, potom vyvolá IllegalArgumentException.
Nižšie je uvedený príklad programovania, kde sme použili rovnaký príklad (ako príklad enum - kľúčové slovo) a implementovali koncepciu všetkých troch metód.
/* * 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')); } }
Výkon:
Enum konštruktor
Enum (pretože je to tiež trieda) podporuje konštruktor na odovzdávanie údajov počas vytvárania enumerátorov alebo je tiež známy ako konštanty enum.
Hlavnou vlastnosťou konštruktora enum je, že sú súkromné alebo súkromné. To znamená, že sú prístupné v rámci triedy alebo balíka.
Pozrime sa na nasledujúci príklad. Tu sme využili metódu aj konštruktor. Najskôr sme vytvorili výčet s názvom „players“, ktorý má päť enumerátorov a pole.
Potom máme konštruktor a metódu, ktorá vráti počet behov dosiahnutý každým hráčom alebo enumerátorom alebo konštantou enum.
Potom máme hlavnú triedu, v ktorej sme pre každú slučku použili metódu values () na ukladanie a iteráciu každého enumerátora. Tiež sme nazvali metódu počtu behov, ktoré zaznamenal každý hráč.
/* * 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'); } }
Výkon:
často kladené otázky
Otázka 1) Aký je rozdiel medzi Iteratorom a Enumeráciou v Jave?
Odpoveď: Ďalej je uvedený rozdiel medzi iterátorom a enumeráciou.
Iterátor | Vymenovanie |
---|---|
Jedná sa o všeobecný kurzor, ktorý sa používa na iteráciu prvkov, a je použiteľný pre všetky triedy kolekcie. | Nejde o všeobecný kurzor, pretože je použiteľný iba pre staršie triedy, ako je Enum. Povolenie na čítanie iba pre triedu zbierky. |
Niektoré z metód sú pre iteráciu hasNext (), next (). | Niektoré z metód sú hasMoreElements (), nextElement () pre iteráciu. |
Element v kolekcii môžeme odstrániť pomocou iterátora. | Element v zbierke nemôžeme odstrániť pomocou funkcie Enumeration, pretože má iba povolenie na čítanie. |
Otázka č. 2) Ako Enum podporuje dedičnosť?
Odpoveď: Afterall Enum je tiež trieda v Jave, takže musí podporovať Inheritance, ktorá je základným princípom OOPS. Všetky výčty rozširujú triedu java.lang.Enum. Pretože trieda môže rozšíriť iba jedného rodiča, trieda Enum nerozšíri žiadne ďalšie.
ToString (), ktorý je súčasťou triedy Enum (vysvetlený v časti Metóda Enum), je prepísaný v triede java.lang.Enum.
Záver
V tomto tutoriáli sme diskutovali o enumeráciách, enumerátoroch, triede Java Enum a kľúčovom slove enum s príslušnými príkladmi a vysvetleniami všade, kde je to potrebné. Tiež sme poskytli prehľad o dôležitých metódach spojených s triedou Enum s poľom enum.
Bol poskytnutý pohľad do konštruktora, enumu s if-else, switchom a slučkami.
=> Navštívte tu a dozviete sa Java od začiatku.
Odporúčané čítanie
- Výukový program triedy skenerov Java s príkladmi
- Celé číslo Java a trieda Java BigInteger s príkladmi
- Výukový program Java Float s príkladmi programovania
- Čo je Java Vector | Výukový program Java Vector Class s príkladmi
- TreeMap In Java - návod s príkladmi Java TreeMap
- Výukový program Java s príkladmi programovania
- Výukový program triedy Java Array - java.util. Trieda polí s príkladmi
- Koncepty C #: Constructor, Destructor, Static Class, Struct & Enum