logo

enum v Jave

v Jave Enumerácie alebo Java Enum slúžia na účely reprezentácie skupiny pomenovaných konštánt v programovacom jazyku. Výčty Java sa používajú, keď poznáme všetky možné hodnoty v čase kompilácie, ako sú voľby v ponuke, režimy zaokrúhľovania, príznaky príkazového riadka atď. Sada konštánt v type výčtu nemusí zostať fixná po celý čas.

Čo je Enumerácia alebo Enum v Jave?

Enumerácia Java je typ triedy. Aj keď nepotrebujeme vytvárať inštanciu enum pomocou Nový, má rovnaké možnosti ako ostatné triedy. Táto skutočnosť robí z enumerácie Java veľmi silný nástroj. Rovnako ako triedam, môžete im dať konštruktory, pridať premenné inštancie a metódy a dokonca implementovať rozhrania.

Príklad enum:

4 farby v balíčku hracích kariet môžu byť 4 čítače s názvom Club, Diamond, Heart a Spade, ktoré patria do vymenovaného typu s názvom Suit. Ďalšie príklady zahŕňajú prirodzené vymenované typy (ako planéty, dni v týždni, farby, smery atď.).



Jedna vec, ktorú treba mať na pamäti, je, že na rozdiel od tried enumerácie nededia iné triedy, ani sa nemôžu rozšíriť (t. j. stať sa supertriedou). Môžeme doň pridať aj premenné, metódy a konštruktory. Hlavným cieľom enum je definovať naše vlastné dátové typy (enumerované dátové typy).

Deklarácia enum v Jave

Deklaráciu enum možno vykonať mimo triedy alebo vo vnútri triedy, ale nie v rámci metódy.

1. Vyhlásenie mimo triedy

Java




// 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ýkon

RED>

2. Deklarácia v triede

Java


entitný vzťahový



// 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ýkon

RED>
  • Prvý riadok v zozname by mal byť zoznam konštánt a potom ďalšie veci, ako sú metódy, premenné a konštruktory.
  • Podľa Konvencie pomenovania Java , odporúča sa pomenovať konštantu veľkými písmenami

Vlastnosti Enum v Jave

Existujú určité vlastnosti, za ktorými nasleduje Enum, ako je uvedené nižšie:

  • Každý enum je interne implementovaný pomocou Class.
  • Každá enum konštanta predstavuje an objekt typu enum.
  • Typ enum možno odovzdať ako argument prepínač Vyhlásenia.
  • Každá enum konštanta je vždy implicitne verejné statické finále . Keďže je statické , môžeme k nemu pristupovať pomocou enum Name. Keďže je Konečný , nemôžeme vytvárať detské zoznamy.
  • Môžeme vyhlásiť metóda main(). vnútri enum. Preto môžeme vyvolať enum priamo z príkazového riadka.

Nižšie je uvedená implementácia vyššie uvedených vlastností:

Java




// 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();> >}> }>

>

>

urobiť while slučku v jave
Výkon

Mondays are bad.>

Programy Java Enum

1. Hlavná funkcia vnútri Enum

Môžeme deklarovať hlavnú funkciu vo vnútri enum, pretože môžeme vyvolať enum priamo z príkazového riadka.

Nižšie je uvedená implementácia vyššie uvedenej vlastnosti:

Java




// 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ýkon

RED>

2. Slučka cez Enum

Cez Enum môžeme iterovať pomocou hodnôt ( ) a slučky. funkcia values() vracia pole hodnôt Enum ako konštanty, pomocou ktorých môžeme hodnoty iterovať.

Nižšie je uvedená implementácia cyklu cez Enum:

Java


linuxové príkazy, ktoré



// 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ýkon

RED GREEN BLUE>

3. Enum v príkaze Switch

Java




// 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ýkon

Other color observed>

Enum a dedičnosť

  • Všetky enumy sa implicitne rozširujú trieda java.lang.Enum . Ako trieda sa môže len predĺžiť jeden rodič v jazyku Java, enum nemôže rozšíriť nič iné.
  • metóda toString(). je prepísaná v trieda java.lang.Enum , ktorý vráti meno konštanty enum.
  • enum môže implementovať mnoho rozhraní.

Enum a konštruktor

  • Enum môže obsahovať konštruktor a ten sa vykonáva samostatne pre každú konštantu enum v čase načítania triedy enum.
  • Objekty enum nemôžeme vytvárať explicitne, a preto nemôžeme priamo vyvolať konštruktor enum.

Enum a metódy

Enum môže obsahovať oboje betón metódy a abstraktné metódy. Ak má trieda enum abstraktnú metódu, potom ju musí implementovať každá inštancia triedy enum.

Java




// 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ýkon

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

Časté otázky o Enum v jazyku Java

Q1. Môžeme vytvoriť inštanciu Enum pomocou nového kľúčového slova?

Roky:

Nie, nemôžeme vytvoriť inštanciu kľúčového slova Enum, pretože obsahuje iba súkromné ​​konštruktory.

Q2. Môžeme mať v Enum abstraktnú metódu?

Roky:

Áno, v Enum máme abstraktnú metódu.

Q3. Aký je účel metódy values() v enume?

Roky:

V jazyku Java je možné použiť metódu values() na vrátenie všetkých hodnôt prítomných vo vnútri enum.

Q4. Aký je účel metódy valueOf() v enum?

Roky:

Metóda valueOf() vracia enum konštantu zadanej hodnoty reťazca, ak existuje.

Q5. Aký je účel metódy ordinal() v enum?

Roky:

Pomocou metódy ordinal() možno nájsť každý index konštanty enum, rovnako ako index poľa.

Q6. Napíšte program v jazyku Java, ktorý opíše použitie metód values(), valueOf() a ordinal() v enum.

Roky:

Java




// 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'));> >}> }>

>

ako vrátiť pole v jave

>

Výkon

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

Ďalší článok o enume: Enum s prispôsobenou hodnotou v jazyku Java