logo

Java Enums

The Enum v Javi je podatkovni tip, ki vsebuje fiksen niz konstant.

Uporablja se lahko za dneve v tednu (NEDELJA, PONEDELJEK, TOREK, SREDA, ČETRTEK, PETEK in SOBOTA), smeri (SEVER, JUG, VZHOD in ZAHOD), letni čas (POMLAD, POLETJE, ZIMA in JESEN ali JESEN). ), barve (RDEČA, RUMENA, MODRA, ZELENA, BELA in ČRNA) itd. V skladu s konvencijami o poimenovanju v Javi bi morali imeti vse konstante z velikimi črkami. Torej imamo konstante enum z velikimi črkami.

Java Enume si lahko predstavljamo kot razrede, ki imajo fiksen niz konstant (spremenljivka, ki se ne spreminja). Konstante Java enum so statične in implicitno končne. Na voljo je od JDK 1.5.

modem proti usmerjevalniku

Enume se uporabljajo za ustvarjanje lastnega podatkovnega tipa, kot so razredi. The enum podatkovni tip (znan tudi kot enumerated data type) se uporablja za definiranje enum v Javi. Za razliko od C/C++ je enum v Javi več močan . Tukaj lahko definiramo enum znotraj razreda ali zunaj njega.

Java Enum interno podeduje Enum razred , zato ne more podedovati nobenega drugega razreda, lahko pa implementira številne vmesnike. V Java enum imamo lahko polja, konstruktorje, metode in glavne metode.

Točke, ki si jih morate zapomniti za Java Enum

  • Enum izboljša varnost tipov
  • Enum je mogoče preprosto uporabiti v stikalu
  • Enum je mogoče prečkati
  • Enum ima lahko polja, konstruktorje in metode
  • Enum lahko izvaja številne vmesnike, vendar ne more razširiti nobenega razreda, ker interno razširja razred Enum
Točke Java Enum

Preprost primer Java Enum

 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); }} 
Preizkusite zdaj

Izhod:

 WINTER SPRING SUMMER FALL 

Oglejmo si še en primer enuma Java, kjer uporabljamo metode value(), valueOf() in ordinal() enuma Java.

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

Izhod:

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

Opomba: prevajalnik Java med prevajanjem interno doda metode values(), valueOf() in ordinal() v enum. Interno ustvari statični in končni razred za enum.

Kakšen je namen metode values() v enum?

Prevajalnik Java interno doda metodo values(), ko ustvari enum. Metoda values() vrne matriko, ki vsebuje vse vrednosti enum.

Kakšen je namen metode valueOf() v enum?

Prevajalnik Java interno doda metodo valueOf(), ko ustvari enum. Metoda valueOf() vrne vrednost podane konstante enum.

Kakšen je namen metode ordinal() v enumu?

Prevajalnik Jave interno doda metodo ordinal(), ko ustvari enum. Metoda ordinal() vrne indeks vrednosti enum.


Definiranje Java Enum

Enum je mogoče definirati znotraj ali zunaj razreda, ker je podoben razredu. Podpičje (;) na koncu konstant enum ni obvezno. Na primer:

 enum Season { WINTER, SPRING, SUMMER, FALL } 

ali,

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

Obe definiciji Java enum sta enaki.

Primer Java Enum: definirano zunaj razreda

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

Izhod:

 WINTER 

Primer Java Enum: definirano znotraj razreda

 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); }} 
Preizkusite zdaj

Izhod:

 WINTER 

Java Enum Primer: glavna metoda znotraj Enuma

Če metodo main() postavite znotraj enuma, lahko enum zaženete neposredno.

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

Izhod:

 WINTER 

Inicializacija določenih vrednosti za konstante enum

Konstante enum imajo začetno vrednost, ki se začne pri 0, 1, 2, 3 itd. Lahko pa inicializiramo specifično vrednost za konstante enum z definiranjem polj in konstruktorjev. Kot je navedeno prej, ima lahko Enum polja, konstruktorje in metode.

Primer podajanja začetne vrednosti konstantam enum

 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); }} 
Preizkusite zdaj

Izhod:

računalnik izumil katerega leta
 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Konstruktor tipa enum je zaseben. Če ne navedete zasebnega, prevajalnik interno ustvari zasebni konstruktor.

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

Notranja koda, ki jo je ustvaril prevajalnik za zgornji primer tipa enum

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

Ali lahko ustvarimo primerek Enum z novo ključno besedo?

Ne, ker vsebuje samo zasebne konstruktorje.

Ali lahko imamo v Enumu abstraktno metodo?

Seveda! imamo lahko abstraktne metode in lahko zagotovimo izvajanje teh metod.


Java Enum v stavku switch

Enum lahko uporabimo na stavku switch kot v danem primeru:

Primer uporabe Enum na stavku switch

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

Izhod:

 monday