V Javi, Naštevanja ali Java Enum služijo za predstavitev skupine poimenovanih konstant v programskem jeziku. Java enumi se uporabljajo, ko poznamo vse možne vrednosti v času prevajanja, kot so izbire v meniju, načini zaokroževanja, zastavice ukazne vrstice itd. Ni treba, da nabor konstant v tipu enum ostane ves čas nespremenljiv.
Kaj je enumeration ali enum v Javi?
Naštevanje Java je vrsta razreda. Čeprav nam ni treba instancirati enum z uporabo novo, ima enake zmogljivosti kot drugi razredi. Zaradi tega dejstva je naštevanje Java zelo zmogljivo orodje. Tako kot razredom jim lahko daste konstruktorje, dodate spremenljivke primerkov in metode ter celo implementirate vmesnike.
Enum Primer:
4 barve v kompletu igralnih kart so lahko 4 števci z imenom Club, Diamond, Heart in Spade, ki pripadajo številčni vrsti z imenom Suit. Drugi primeri vključujejo naravne naštete vrste (kot so planeti, dnevi v tednu, barve, smeri itd.).
Upoštevati je treba, da za razliko od razredov naštevanja niti ne podedujejo drugih razredov niti se ne morejo razširiti (tj. postati nadrazred). Dodamo mu lahko tudi spremenljivke, metode in konstruktorje. Glavni cilj enuma je definiranje lastnih podatkovnih tipov (našteti podatkovni tipi).
Deklaracija enum v Javi
Deklaracijo enuma lahko naredite zunaj razreda ali znotraj razreda, ne pa znotraj metode.
1. Izjava izven razreda
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);> >}> }> |
>
>Izhod
RED>
2. Deklaracija znotraj razreda
Java
git status -s
// 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);> >}> }> |
>
>Izhod
RED>
- Prva vrstica znotraj enuma mora biti seznam konstant in nato druge stvari, kot so metode, spremenljivke in konstruktorji.
- Po navedbah Pravila poimenovanja v Javi , je priporočljivo, da konstanto poimenujemo z velikimi črkami
Lastnosti enuma v Javi
Obstajajo nekatere lastnosti, ki jim sledi Enum, kot je navedeno spodaj:
- Vsak enum je interno implementiran z uporabo razreda.
- Vsaka konstanta enum predstavlja predmet tipa enum.
- Enum tip lahko posredujete kot argument stikalo izjave.
- Vsaka konstanta enum je vedno implicitna javni statični finale . Ker je statična , lahko do njega dostopamo z uporabo enuma Name. Ker je dokončno , ne moremo ustvariti podrejenih enumov.
- Lahko razglasimo metoda main(). znotraj enuma. Zato lahko enum pokličemo neposredno iz ukaznega poziva.
Spodaj je izvedba zgornjih lastnosti:
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();> >}> }> |
>
>
java util datumIzhod
Mondays are bad.>
Programi Java Enum
1. Glavna funkcija znotraj enuma
Znotraj enuma lahko deklariramo glavno funkcijo, saj lahko enum prikličemo neposredno iz ukaznega poziva.
Spodaj je izvedba zgornje lastnosti:
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);> >}> }> |
>
>Izhod
RED>
2. Skozi Enum
Enum lahko ponavljamo z uporabo values() in zanke. funkcije values() vrne matriko vrednosti Enum kot konstante, s katerimi lahko ponavljamo vrednosti.
Spodaj je izvedba zanke skozi Enum:
Java
// 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);> >}> >}> }> |
>
>Izhod
2 proti 1 multiplekser
RED GREEN BLUE>
3. Enum v stavku 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'>);> >}> >}> }> |
>
>Izhod
Other color observed>
Enum in dedovanje
- Vsi enumi se implicitno razširijo java.lang.Enum razred . Kot razred se lahko samo razširi eno nadrejeni v Javi, enum ne more razširiti ničesar drugega.
- metoda toString(). je preglasen v java.lang.Enum razred , ki vrne ime konstante enum.
- enum lahko izvaja številne vmesnike.
Enum in konstruktor
- Enum lahko vsebuje konstruktor in se izvede ločeno za vsako konstanto enum v času nalaganja razreda enum.
- Objektov enum ne moremo izrecno ustvariti in zato ne moremo neposredno priklicati konstruktorja enum.
Enum in metode
Enum lahko vsebuje oboje beton metode in povzetek metode. Če ima razred enum abstraktno metodo, jo mora implementirati vsak primerek razreda 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();> >}> }> |
>
>Izhod
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>
Pogosta vprašanja o Enum v Javi
Q1. Ali lahko ustvarimo primerek Enum z novo ključno besedo?
leta:
Ne, ne moremo ustvariti primerka ključne besede Enum, ker vsebuje samo zasebne konstruktorje.
Q2. Ali lahko imamo v Enumu abstraktno metodo?
leta:
Da, v Enumu imamo abstraktno metodo.
Q3. Kakšen je namen metode values() v enum?
leta:
V Javi lahko metodo values() uporabite za vrnitev vseh vrednosti, ki so prisotne znotraj enuma.
Q4. Kakšen je namen metode valueOf() v enum?
leta:
Metoda valueOf() vrne konstanto enum navedene vrednosti niza, če obstaja.
V5. Kakšen je namen metode ordinal() v enumu?
leta:
Z uporabo metode ordinal() je mogoče najti vsak konstantni indeks enum, tako kot matrični indeks.
V6. V Javi napišite program za opis uporabe metod values(), valueOf() in ordinal() v enum.
leta:
IzhodJava
// 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'));>>}>}>>pretvorba niza v int v javi>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
Naslednji članek o enum: Enum s prilagojeno vrednostjo v Javi