logo

enum v Javě

v Javě, Enumerations nebo Java Enum slouží k reprezentaci skupiny pojmenovaných konstant v programovacím jazyce. Výčty Java se používají, když známe všechny možné hodnoty v době kompilace, jako jsou volby v nabídce, režimy zaokrouhlování, příznaky příkazového řádku atd. Sada konstant v typu výčtu nemusí zůstat pevná po celou dobu.

Co je Enumeration nebo Enum v Javě?

Výčet Java je typ třídy. I když nepotřebujeme instanci enum pomocí Nový, má stejné možnosti jako ostatní třídy. Tato skutečnost dělá z Java enumerace velmi mocný nástroj. Stejně jako třídám jim můžete dát konstruktory, přidat proměnné a metody instance a dokonce implementovat rozhraní.

Příklad výčtu:

4 barvy v balíčku hracích karet mohou být 4 počítadla pojmenovaná Club, Diamond, Heart a Spade, patřící k vyjmenovanému typu s názvem Suit. Další příklady zahrnují přirozené výčtové typy (jako jsou planety, dny v týdnu, barvy, směry atd.).



Jedna věc, kterou je třeba mít na paměti, je, že na rozdíl od tříd výčty nedědí jiné třídy ani se nemohou rozšířit (tj. stát se supertřídou). Můžeme do něj také přidat proměnné, metody a konstruktory. Hlavním cílem výčtu je definovat naše vlastní datové typy (Enumerated Data Types).

Deklarace enum v Javě

Deklarace výčtu může být provedena mimo třídu nebo uvnitř třídy, ale ne uvnitř metody.

1. Prohlášení mimo třídu

Jáva




// A simple enum example where enum is declared> // outside any class (Note enum keyword instead of> // class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }>

>

>

Výstup

RED>

2. Deklarace uvnitř třídy

Jáva


jak získat hru pigeon na android



// enum declaration inside a class.> public> class> Test {> >enum> Color {> >RED,> >GREEN,> >BLUE;> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }>

>

>

Výstup

RED>
  • První řádek uvnitř výčtu by měl být seznam konstant a pak další věci, jako jsou metody, proměnné a konstruktory.
  • Podle Konvence pojmenování Java , doporučujeme pojmenovat konstantu velkými písmeny

Vlastnosti Enum v Javě

Existují určité vlastnosti následované Enum, jak je uvedeno níže:

  • Každý výčet je interně implementován pomocí Class.
  • Každá výčtová konstanta představuje an objekt typu enum.
  • Typ výčtu lze předat jako argument přepínač prohlášení.
  • Každá výčtová konstanta je vždy implicitně veřejné statické finále . Protože je statický , můžeme k němu přistupovat pomocí názvu výčtu. Protože je finále , nemůžeme vytvářet podřízené výčty.
  • Můžeme prohlásit metoda main(). uvnitř enum. Výčet tedy můžeme vyvolat přímo z příkazového řádku.

Níže je uvedena implementace výše uvedených vlastností:

Jáva




// A Java program to demonstrate working on enum> // in switch case (Filename Test. Java)> import> java.util.Scanner;> // An Enum class> enum> Day {> >SUNDAY,> >MONDAY,> >TUESDAY,> >WEDNESDAY,> >THURSDAY,> >FRIDAY,> >SATURDAY;> }> // Driver class that contains an object of 'day' and> // main().> public> class> Test {> >Day day;> >// Constructor> >public> Test(Day day) {>this>.day = day; }> >// Prints a line about Day using switch> >public> void> dayIsLike()> >{> >switch> (day) {> >case> MONDAY:> >System.out.println(>'Mondays are bad.'>);> >break>;> >case> FRIDAY:> >System.out.println(>'Fridays are better.'>);> >break>;> >case> SATURDAY:> >case> SUNDAY:> >System.out.println(>'Weekends are best.'>);> >break>;> >default>:> >System.out.println(>'Midweek days are so-so.'>);> >break>;> >}> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >String str =>'MONDAY'>;> >Test t1 =>new> Test(Day.valueOf(str));> >t1.dayIsLike();> >}> }>

>

>

udělat while smyčku v Javě
Výstup

Mondays are bad.>

Programy Java Enum

1. Hlavní funkce uvnitř Enum

Hlavní funkci můžeme deklarovat uvnitř výčtu, protože výčet můžeme vyvolat přímo z příkazového řádku.

Níže je uvedena implementace výše uvedené vlastnosti:

Jáva




// A Java program to demonstrate that we can have> // main() inside enum class.> enum> Color {> >RED,> >GREEN,> >BLUE;> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }>

>

>

Výstup

RED>

2. Projděte Enum

Můžeme iterovat přes Enum pomocí value() a smyčky. funkce values() vrací pole hodnot Enum jako konstanty, pomocí kterých můžeme hodnoty iterovat.

Níže je implementace smyčky přes Enum:

Jáva




// Java Program to Print all the values> // inside the enum using for loop> import> java.io.*;> // Enum Declared> enum> Color {> >RED,> >GREEN,> >BLUE;> }> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Iterating over all the values in> >// enum using for loop> >for> (Color var_1 : Color.values()) {> >System.out.println(var_1);> >}> >}> }>

>

>

Výstup

RED GREEN BLUE>

3. Enum v příkazu Switch

Jáva




// Java Program to implement> // Enum in a Switch Statement> import> java.io.*;> // Driver Class> class> GFG {> >// Enum Declared> >enum> Color {> >RED,> >GREEN,> >BLUE,> >Yellow;> >}> >// Main Function> >public> static> void> main(String[] args)> >{> >Color var_1=Color.Yellow;> > >// Switch case with Enum> >switch>(var_1){> >case> RED:> >System.out.println(>'Red color observed'>);> >break>;> >case> GREEN:> >System.out.println(>'Green color observed'>);> >break>;> >case> BLUE:> >System.out.println(>'Blue color observed'>);> >default>:> >System.out.println(>'Other color observed'>);> >}> >}> }>

věk mia Khalifa

>

>

Výstup

Other color observed>

Enum a dědičnost

  • Všechny výčty se implicitně rozšiřují třída java.lang.Enum . Jako třída může pouze rozšířit jeden rodič v Javě, výčet nemůže rozšířit nic jiného.
  • metoda toString(). je přepsán v třída java.lang.Enum , která vrací jméno konstanty enum.
  • enum může implementovat mnoho rozhraní.

Enum a konstruktor

  • Enum může obsahovat konstruktor a ten se provádí samostatně pro každou konstantu enum v době načítání třídy enum.
  • Objekty výčtu nemůžeme vytvářet explicitně, a proto nemůžeme přímo vyvolat konstruktor výčtu.

Výčet a metody

Enum může obsahovat obojí beton metody a abstraktní metody. Pokud má třída enum abstraktní metodu, pak ji musí implementovat každá instance třídy enum.

Jáva




// Java program to demonstrate that enums can have> // constructor and concrete methods.> // An enum (Note enum keyword inplace of class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> >// enum constructor called separately for each> >// constant> >private> Color()> >{> >System.out.println(>'Constructor called for : '> >+>this>.toString());> >}> >public> void> colorInfo()> >{> >System.out.println(>'Universal Color'>);> >}> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >c1.colorInfo();> >}> }>

>

>

Výstup

Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>

Často kladené otázky o Enum v Javě

Q1. Můžeme vytvořit instanci Enum pomocí nového klíčového slova?

roky:

Ne, nemůžeme vytvořit instanci klíčového slova Enum, protože obsahuje pouze soukromé konstruktory.

Q2. Můžeme mít v Enum abstraktní metodu?

roky:

Ano, v Enum máme abstraktní metodu.

Q3. Jaký je účel metody values() ve výčtu?

roky:

V Javě lze metodu values() použít k vrácení všech hodnot přítomných ve výčtu.

Q4. Jaký je účel metody valueOf() ve výčtu?

roky:

Metoda valueOf() vrací konstantu výčtu zadané hodnoty řetězce, pokud existuje.

Q5. Jaký je účel metody ordinal() ve výčtu?

roky:

Pomocí metody ordinal() lze nalézt každý index konstanty výčtu, stejně jako index pole.

Q6. Napište program v Javě, který popíše použití metod values(), valueOf() a ordinal() ve výčtu.

roky:

Jáva




// Java program to demonstrate working of values(),> // ordinal() and valueOf()> enum> Color {> >RED,> >GREEN,> >BLUE;> }> public> class> Test {> >public> static> void> main(String[] args)> >{> >// Calling values()> >Color arr[] = Color.values();> >// enum with loop> >for> (Color col : arr) {> >// Calling ordinal() to find index> >// of color.> >System.out.println(col +>' at index '> >+ col.ordinal());> >}> >// Using valueOf(). Returns an object of> >// Color with given constant.> >// Uncommenting second line causes exception> >// IllegalArgumentException> >System.out.println(Color.valueOf(>'RED'>));> >// System.out.println(Color.valueOf('WHITE'));> >}> }>

>

alternativa mylivecricket

>

Výstup

RED at index 0 GREEN at index 1 BLUE at index 2 RED>

Další článek o výčtu: Enum s přizpůsobenou hodnotou v Javě