java enum java enumeration tutorial with examples
Tento výukový program se bude zabývat třídou a konstruktorem Java Enum. Naučíme se, jak používat Enum prostřednictvím různých příkladů programování v Javě:
Toto je speciální třída, jejíž vysvětlení bude poskytnuto podrobně. Bude poskytnut pohled na třídu Java Enum spolu se seznamem metod, které podporuje.
Dostatečné programy, které implementují koncepty Java enum a některé často kladené otázky, které mohou být položeny během rozhovorů, jsou zahrnuty v tomto výukovém programu pro vaše snadné pochopení.
=> Zaškrtněte zde a podívejte se na sérii školení Java pro všechny.
Co se naučíte:
Výčet Java
Výčet Java není nic jiného než seznam proměnných instance, metod nebo konstruktorů. Jedná se o skupinu konstant. Koncept výčtu byl představen v JDK5. Výchozí vlastnost každé konstanty výčtu je public, static a final.
enum Klíčové slovo
Výčet je vytvořen pomocí klíčového slova s názvem „ výčet “.
Níže je uvedena syntaxe, pomocí které můžeme vytvořit výčet.
Syntax:
enum enumerated_type_name
{
enumerator1, enumerator2,… enumeratorN;
}
Poznámka: enum lze definovat pouze uvnitř třídy nebo rozhraní nejvyšší úrovně nebo ve statickém kontextu. Nemělo by to být uvnitř metody.
enum Příklad
V tomto příkladu inicializujeme čtyři výčty, tj. Rýč, srdce, diamant a klub patřící do výčtu typu zvaného karty.
Potom se pokusíme vytisknout každý z těchto enumerátorů.
/* * 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ýstup:
Třída Enum
Jedna věc, kterou jste si určitě všimli ve výše uvedeném příkladu (viz komentáře), je, že jsme nepoužili a „Nové klíčové slovo“ při instanci. Ačkoli výčty definují třídu Enum a také konstruktory, nepoužívají nové klíčové slovo.
Můžeme použít enumerátory definované stejným způsobem jako primitivní. Enum je obecná třída a všechny výčty dědí Enum.
Syntax:
// E je typ výčtu.
třída Enum
Jak používat Enum v Javě
Podívejme se, jak pomocí Enum v různých scénářích pomocí příkladů Java:
Uvnitř třídy A.
Enum lze deklarovat uvnitř nebo vně (příklad klíčového slova enum) třídy, ale ne uvnitř metody. Zde ukážeme, jak je enum deklarován uvnitř třídy.
V níže uvedeném příkladu , vytvořili jsme výčet uvnitř třídy a poté jsme pomocí referenční proměnné a1 načetli hodnotu nebo enumerátor.
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ýstup:
Iterační výčet přes smyčky
Zde probereme, jak můžeme procházet výčtem. Deklaraci jsme deklarovali čtyřmi enumerátory (mimo třídu). Pak jsme inicializovali a pro každou smyčku (uvnitř třídy) a pokusili jsme se načíst hodnotu enumerátorů.
/* * 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ýstup:
jaké jsou nejlepší stahovače hudby
V případě jiného
V níže uvedeném programu jsme vytvořili výčet se třemi různými enumerátory a poté enumerátor uložili do referenční proměnné pro jeden ze zadaných enumerátorů.
Poté jsme zahájili kontrolu podmínky if, kde jsme implementovali dvě podmínky zadané pomocí OR, takže pokud je splněna jedna z těchto podmínek, vytiskne příkaz uvedený v podmínce if.
Jinak vytiskne příkaz uvedený v podmínce 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ýstup:
Ve výpisu Switch
V níže uvedeném programu jsme vytvořili výčet se čtyřmi výčty. Poté jsme jeden z enumerátorů uložili do referenční proměnné. Poté jsme inicializovali příkaz Switch a zkontrolovali každý z těchto enumerátorů.
Při výskytu daného konkrétního enumerátoru vytiskne příkaz uvedený v konkrétním případě.
/* * 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ýstup:
Enum pole a metody
Pole Enum
Tato část podrobně vysvětlí pole výčtu. Můžeme přidat pole do výčtu Java a každý enumerátor získá tato pole. Hodnota pole by měla být přiřazena konstruktoru výčtu.
V níže uvedené syntaxi vidíme, že výčet byl definován třemi výčty. Vedle každého enumerátoru jsme definovali pole typu int. ( Např. - (3), (2) a (1)).
To znamená, že Java enum má konstruktor, který bere int. Tento konstruktor nastavuje pole int. Když je definován enumerátor, pak je tato hodnota int (zadaná pro tento enumerátor) předána konstruktoru.
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: Například v poli Enum si přečtěte část „ Enum konstruktor “.
Metody výčtu
# 1) name ()
public final String name () - Vrátí název vyvolávací konstanty (nezměněno nebo nezměněno).
# 2) rovná se ()
public final boolean equals (Object other) - Vrací true, pokud obj a vyvolávající objekt odkazují na stejnou konstantu.
# 3) toString
public String toString () - Vrátí název vyvolávací konstanty. Ne nutně odpovídá názvu použitému v deklaraci výčtu.
# 4) klon
chráněný finální klon objektu ()
vyvolá CloneNotSupportedException - to znamená, že výčet při pokusu o klonování vyvolá výjimku.
# 5) hashCode ()
public final int hashCode () - Vrátí hash kód vyvolávajícího objektu.
# 6) dokončit ()
protected final void finalize () - třída enum nemůže mít dokončené metody. Žádná návratová hodnota.
# 7) compareTo ()
public final int compareTo (E obj) - Porovná výčet se zadaným objektem obj. Vrací záporné, pokud je objekt menší než zadaný objekt. Vrátí kladné, pokud je tento objekt větší než zadaný objekt obj, a vrátí nulu, pokud se zadaný obj rovná tomuto objektu.
# 8) getDeclaringClass
public final Class getDeclaringClass () - Vrátí typ výčtu (známý také jako třída deklarující výčet), jehož je vyvolávací konstanta členem.
# 9) ordinal (), values () and valueOf ()
Všechny tyto metody jsou součástí balíčku java.lang.Enum . Metoda ordinal () vrací pořadí konstanty výčtu na základě indexu konstanty.
Metoda values () vrací všechny hodnoty přítomné ve výčtu. Metoda valueOf (String) vrací konstantu výčtu vstupního řetězce. Pokud zadaný řetězec není shodný s konstantou, vyvolá to IllegalArgumentException.
Níže je uveden příklad programování, kde jsme použili stejný příklad (jako příklad klíčového slova enum) a implementovali koncept všech tří 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')); } }
Výstup:
Enum konstruktor
Výčet (protože je to také třída) podporuje konstruktor pro předávání dat během vytváření výčtů nebo také známý jako konstanty výčtu.
Hlavní vlastností konstruktoru výčtu je, že jsou private nebo private-package. To znamená, že jsou buď přístupné ve třídě, nebo v balíčku.
Podívejme se na níže uvedený příklad. Zde jsme využili jak metodu, tak konstruktor. Nejprve jsme vytvořili výčet s názvem „players“, který má pět enumerátorů a pole.
Pak máme konstruktor a metodu, která vrátí počet běhů zaznamenaných každým hráčem nebo enumerátorem nebo konstantou výčtu.
Poté máme hlavní třídu, ve které jsme pro každou smyčku využili metodu values () k uložení a iteraci každého enumerátoru. Také jsme nazvali metodu počtu běhů zaznamenaných každým hráčem.
/* * 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ýstup:
Často kladené otázky
Otázka č. 1) Jaký je rozdíl mezi Iterator a Enumeration v Javě?
Odpovědět: Níže je uveden rozdíl mezi Iterátorem a Výčtem.
Iterátor | Výčet |
---|---|
Je to obecný kurzor, který se používá k iteraci prvků a je použitelný pro všechny třídy kolekce. | Není to obecný kurzor, protože je použitelný pouze pro starší třídy, jako je Enum. Oprávnění ke čtení pouze pro třídu kolekce. |
Některé metody jsou hasNext (), next () pro iteraci. | Některé z metod jsou hasMoreElements (), nextElement () pro iteraci. |
Prvek v kolekci můžeme odebrat pomocí iterátoru. | Prvek v kolekci nemůžeme odebrat pomocí výčtu, protože má pouze oprávnění ke čtení. |
Otázka č. 2) Jak Enum podporuje dědičnost?
Odpovědět: Afterall Enum je také třída v Javě, takže musí podporovat dědičnost, což je základní princip OOPS. Všechny výčty rozšiřují třídu java.lang.Enum. Protože třída může rozšířit pouze jednoho rodiče, třída Enum nerozšiřuje žádné další.
ToString (), který je součástí třídy Enum (vysvětleno v části Metoda Enum), je přepsán ve třídě java.lang.Enum.
Závěr
V tomto kurzu jsme probrali výčty, výčty, třídu Java Enum a klíčové slovo enum s příslušnými příklady a vysvětlením, kdekoli je to nutné. Také jsme poskytli pohled na důležité metody spojené s třídou Enum s polem enum.
Byly poskytnuty informace o konstruktoru, výčtu s if-else, switchem a smyčkami.
=> Navštivte zde a dozvíte se Java od začátku.
Doporučené čtení
- Výukový program třídy skeneru Java s příklady
- Celé číslo Java a třída Java BigInteger s příklady
- Výukový program Java Float s příklady programování
- Co je Java Vector | Výukový program Java Vector Class s příklady
- TreeMap v Javě - výuka s příklady Java TreeMap
- Výukový program Java s příklady programování
- Výukový program třídy Java Array - java.util.Arrays Class with examples
- C # koncepty: konstruktor, destruktor, statická třída, struktura a výčet