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
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