Javalla, Luettelot tai Java Enum palvelevat nimettyjen vakioiden ryhmän esittämistä ohjelmointikielessä. Java Enumeja käytetään, kun tiedämme kaikki mahdolliset arvot käännöshetkellä, kuten valikon valinnat, pyöristystilat, komentorivin liput jne. Enum-tyypin vakiojoukon ei tarvitse pysyä kiinteänä koko ajan.
Mikä on Enumeration tai Enum Javassa?
Java-luettelo on luokkatyyppi. Vaikka meidän ei tarvitse instantoida enumia käyttämällä Uusi, sillä on samat ominaisuudet kuin muilla luokilla. Tämä tosiasia tekee Java-luettelosta erittäin tehokkaan työkalun. Aivan kuten luokille, voit antaa niille rakentajia, lisätä esiintymän muuttujia ja menetelmiä ja jopa toteuttaa rajapintoja.
Enum esimerkki:
Pelikorttipakan 4 maata voivat olla 4 listaajaa nimeltä Club, Diamond, Heart ja Spade, jotka kuuluvat lueteltuun tyyppiin nimeltä Puku. Muita esimerkkejä ovat luonnolliset luetellut tyypit (kuten planeetat, viikonpäivät, värit, suunnat jne.).
Yksi asia on pidettävä mielessä, että toisin kuin luokat, luettelot eivät peri muita luokkia eivätkä niitä voi laajentaa (eli niistä tulee superluokkia). Voimme myös lisätä siihen muuttujia, menetelmiä ja konstruktoreita. Enumin päätavoite on määrittää omat tietotyypit (luetteloidut tietotyypit).
Enum-ilmoitus Javassa
Enum-ilmoitus voidaan tehdä luokan ulkopuolella tai luokan sisällä, mutta ei menetelmän sisällä.
1. Ilmoitus luokan ulkopuolella
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);> >}> }> |
>
>Lähtö
RED>
2. Ilmoitus luokan sisällä
Java
teollisuus ja tehdas
// 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);> >}> }> |
>
>Lähtö
RED>
- Enumin ensimmäisen rivin tulee olla luettelo vakioista ja sitten muista asioista, kuten menetelmistä, muuttujista ja konstruktoreista.
- Mukaan Java nimeämiskäytännöt , on suositeltavaa nimetä vakio isoilla kirjaimilla
Enumin ominaisuudet Javassa
On tiettyjä ominaisuuksia, joita seuraa Enum, kuten alla mainitaan:
- Jokainen enum on toteutettu sisäisesti käyttämällä Classia.
- Jokainen enumvakio edustaa an esine tyyppiä enum.
- Enum-tyyppi voidaan välittää argumenttina vaihtaa lausunnot.
- Jokainen enumvakio on aina implisiittinen julkinen staattinen finaali . Koska se on staattinen , voimme käyttää sitä käyttämällä luetteloa Nimi. Koska se on lopullinen , emme voi luoda lapsienumuksia.
- Voimme ilmoittaa main() -menetelmä enumin sisällä. Siksi voimme kutsua enumia suoraan komentokehotteesta.
Alla on yllä olevien ominaisuuksien toteutus:
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();> >}> }> |
>
>
satunnaisluku javassaLähtö
Mondays are bad.>
Java Enum -ohjelmat
1. Päätoiminto Enumin sisällä
Voimme ilmoittaa pääfunktion enumin sisällä, koska voimme kutsua enumia suoraan komentokehotteesta.
Alla on yllä olevan ominaisuuden toteutus:
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);> >}> }> |
>
>Lähtö
RED>
2. Kierrä Enum läpi
Voimme iteroida Enumin yli käyttämällä arvoja ( ) ja silmukkaa. Values()-funktio palauttaa joukon Enum-arvoja vakioina, joiden avulla voimme iteroida arvoja.
Alla on silmukan toteutus Enumin kautta:
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);> >}> >}> }> |
merkkijonon muuntaminen päivämääräksi
>
>Lähtö
RED GREEN BLUE>
3. Enum Switch-lausunnossa
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'>);> >}> >}> }> |
>
>Lähtö
Other color observed>
Enum ja perintö
- Kaikki enumit implisiittisesti ulottuvat java.lang.Enum-luokka . Koska luokka voi vain laajentaa yksi Vanhempana Javassa, enum ei voi laajentaa mitään muuta.
- toString()-metodi ohitetaan sisään java.lang.Enum-luokka , joka palauttaa enum-vakion nimen.
- enum voi toteuttaa monia käyttöliittymiä.
Enum ja rakentaja
- Enum voi sisältää konstruktorin ja se suoritetaan erikseen jokaiselle enum-vakiolle enum-luokan lataushetkellä.
- Emme voi luoda enum-objekteja eksplisiittisesti, joten emme voi kutsua enum-konstruktoria suoraan.
Enum ja menetelmät
Enum voi sisältää molemmat betoni menetelmät ja abstrakti menetelmiä. Jos enum-luokassa on abstrakti menetelmä, jokaisen enum-luokan esiintymän on toteutettava se.
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();> >}> }> |
>
>Lähtö
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>
Usein kysytyt kysymykset Enumista Javassa
Q1. Voimmeko luoda Enum-esiintymän uudella avainsanalla?
Vuodet:
Ei, emme voi luoda Enum-avainsanan esiintymää, koska se sisältää vain yksityisiä rakentajia.
Q2. Voiko Enumissa olla abstrakti menetelmä?
Vuodet:
Kyllä, meillä on abstrakti menetelmä Enumissa.
Q3. Mikä on value()-menetelmän tarkoitus enumissa?
Vuodet:
Javassa Values()-menetelmää voidaan käyttää palauttamaan kaikki enum-arvot.
Q4. Mikä on valueOf()-menetelmän tarkoitus enumissa?
Vuodet:
Metodi valueOf() palauttaa määritetyn merkkijonoarvon enum-vakion, jos sellainen on olemassa.
Q5. Mikä on ordinal()-menetelmän tarkoitus enumissa?
Vuodet:
Ordinal()-menetelmää käyttämällä jokainen enum-vakioindeksi löytyy, aivan kuten taulukkoindeksi.
Q6. Kirjoita Java-kielellä ohjelma, joka kuvaa value(), valueOf()- ja ordinal()-menetelmien käyttöä enumissa.
Vuodet:
Lähtö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'));>>}>}>>merkkijonon alimerkkijono>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
Seuraava artikkeli enumista: Enum mukautetulla arvolla Javassa