logo

Java Enums

The Enum Javassa on tietotyyppi, joka sisältää kiinteän vakiojoukon.

Sitä voidaan käyttää viikonpäivinä (SUUNNUNTAI, MAANANTAI, TIISTAI, KESKIVIIKKO, TORSTAI, PEJANTAI ja LAUANTAI), suuntiin (POHJOINEN, ETELÄ, ITÄ ja LÄNSI), vuodenaikaan (KEvät, KESÄ, TALVI ja SYKSY tai SYKSY) ), värit (PUNAINEN, KELTAINEN, SININEN, VIHREÄ, VALKOINEN ja MUSTA) jne. Java-nimeämiskäytäntöjen mukaan meillä pitäisi olla kaikki vakiot isoilla kirjaimilla. Joten meillä on enum-vakiot isoilla kirjaimilla.

Java Enumeja voidaan pitää luokkina, joilla on kiinteä joukko vakioita (muuttuja, joka ei muutu). Java-enum-vakiot ovat staattisia ja lopullisia implisiittisesti. Se on saatavilla JDK 1.5:stä lähtien.

vastustaa jsonia javassa

Enumeja käytetään luomaan omia tietotyyppejä, kuten luokkia. The enum tietotyyppiä (tunnetaan myös nimellä Enumerated Data Type) käytetään määrittämään enum Javassa. Toisin kuin C/C++, enum Javassa on enemmän voimakas . Tässä voidaan määritellä enum joko luokan sisällä tai luokan ulkopuolella.

Java Enum perii sisäisesti Enum luokka , joten se ei voi periä mitään muuta luokkaa, mutta se voi toteuttaa monia rajapintoja. Meillä voi olla Java enum -kenttiä, rakentajia, menetelmiä ja päämenetelmiä.

Muistettavat asiat Java Enumista varten

  • Enum parantaa tyyppiturvallisuutta
  • Enumia voidaan helposti käyttää kytkimessä
  • Enum voidaan kiertää
  • Enum voi sisältää kenttiä, konstruktoreita ja menetelmiä
  • Enum voi toteuttaa monia rajapintoja, mutta ei voi laajentaa mitään luokkaa, koska se laajentaa sisäisesti Enum-luokkaa
Java Enum -pisteet

Yksinkertainen esimerkki Java Enumista

 class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }} 
Testaa nyt

Lähtö:

 WINTER SPRING SUMMER FALL 

Katsotaanpa toinen esimerkki Java enumista, jossa käytämme Java enumin arvo(), valueOf() ja ordinal()-menetelmiä.

 class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }} 

Lähtö:

 WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2 

Huomautus: Java-kääntäjä lisää sisäisesti arvot(), valueOf()- ja ordinal()-metodit enumiin käännöshetkellä. Se luo sisäisesti staattisen ja lopullisen luokan enumille.

Mikä on value()-menetelmän tarkoitus enumissa?

Java-kääntäjä lisää sisäisesti arvot()-menetelmän luodessaan enum-luettelon. Metodi Values() palauttaa taulukon, joka sisältää kaikki enum-arvot.

Mikä on valueOf()-menetelmän tarkoitus enumissa?

Java-kääntäjä lisää sisäisesti valueOf()-metodin, kun se luo enum. Metodi valueOf() palauttaa annetun vakioenum-arvon.

Mikä on ordinal()-menetelmän tarkoitus enumissa?

Java-kääntäjä lisää sisäisesti ordinal()-metodin, kun se luo enum. Ordinal()-metodi palauttaa enum-arvon indeksin.

satunnaisarvogeneraattori javassa

Java Enumin määrittely

Enum voidaan määrittää luokan sisällä tai sen ulkopuolella, koska se on samanlainen kuin luokka. Puolipiste (;) enum-vakioiden lopussa on valinnainen. Esimerkiksi:

 enum Season { WINTER, SPRING, SUMMER, FALL } 

Tai,

 enum Season { WINTER, SPRING, SUMMER, FALL; } 

Molemmat Java enumin määritelmät ovat samat.

Java Enum Esimerkki: Määritetty luokan ulkopuolella

 enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }} 
Testaa nyt

Lähtö:

 WINTER 

Java Enum Esimerkki: Määritelty luokan sisällä

 class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }} 
Testaa nyt

Lähtö:

osittainen johdannainen lateksissa
 WINTER 

Java Enum Esimerkki: päämenetelmä Enumin sisällä

Jos laitat main()-metodin enumiin, voit suorittaa enumin suoraan.

 enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } } 

Lähtö:

 WINTER 

Tiettyjen arvojen alustaminen enum-vakioihin

Enum-vakioilla on alkuarvo, joka alkaa 0, 1, 2, 3 ja niin edelleen. Mutta voimme alustaa tietyn arvon enum-vakioihin määrittämällä kentät ja rakentajat. Kuten aiemmin mainittiin, Enumissa voi olla kenttiä, rakentajia ja menetelmiä.

Esimerkki enum-vakioiden alkuarvon määrittämisestä

 class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }} 
Testaa nyt

Lähtö:

 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Enum-tyypin rakentaja on yksityinen. Jos et ilmoita yksityistä kääntäjä luo sisäisesti yksityisen rakentajan.

 enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } } 

Kääntäjän luoma sisäinen koodi yllä olevalle enum-tyypin esimerkille

 final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } } 

Voimmeko luoda Enum-esiintymän uudella avainsanalla?

Ei, koska se sisältää vain yksityisiä rakentajia.

Voiko Enumissa olla abstrakti menetelmä?

Tottakai! meillä voi olla abstrakteja menetelmiä ja voimme tarjota näiden menetelmien toteutuksen.


Java Enum kytkinlauseessa

Voimme käyttää enumia kytkinlauseessa kuten annetussa esimerkissä:

Esimerkki Enumin käyttämisestä kytkinkäskyssä

 class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }} 
Testaa nyt

Lähtö:

 monday