A Enum Java nyelven egy olyan adattípus, amely rögzített konstanskészletet tartalmaz.
Használható a hét napjaira (VASÁRNAP, HÉTFŐ, KEDD, SZERDA, CSÜTÖRTÖK, PÉNTEK és SZOMBAT), irányokra (ÉSZAK, DÉL, KELET és NYUGAT), évszakra (TAVASZ, NYÁR, TÉL és ŐSZ vagy ŐSZ) ), színek (PIROS, SÁRGA, KÉK, ZÖLD, FEHÉR és FEKETE) stb. A Java elnevezési konvenciók szerint minden állandót nagybetűvel kell írnunk. Tehát vannak enum konstansaink nagybetűkkel.
A Java Enumokat olyan osztályoknak tekinthetjük, amelyek állandó konstanskészlettel rendelkeznek (egy olyan változó, amely nem változik). A Java enum állandók statikusak és implicit módon véglegesek. A JDK 1.5 óta elérhető.
alya manasa
Az enumokat saját adattípusunk, például osztályok létrehozására használjuk. A enum Az adattípus (más néven felsorolt adattípus) az enum meghatározására szolgál Java nyelven. A C/C++-tól eltérően az enum a Java nyelvben több erős . Itt definiálhatunk egy enumot akár az osztályon belül, akár az osztályon kívül.
A Java Enum belsőleg örökli a Enum osztály , tehát nem örökölhet más osztályt, de számos interfészt képes megvalósítani. A Java enumban lehetnek mezőink, konstruktoraink, metódusaink és fő metódusaink.
Ne felejtse el a Java Enum elemeit
- Az Enum javítja a típusbiztonságot
- Az Enum könnyen használható kapcsolóban
- Az enum átjárható
- Az Enum tartalmazhat mezőket, konstruktorokat és metódusokat
- Az Enum számos interfészt megvalósíthat, de egyetlen osztályt sem tud kiterjeszteni, mert belsőleg kiterjeszti az Enum osztályt
A Java Enum egyszerű példája
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); }}Tesztelje most
Kimenet:
WINTER SPRING SUMMER FALL
Lássunk egy másik példát a Java enum-ra, ahol a Java enum value(), valueOf() és ordinal() metódusait használjuk.
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()); }}
Kimenet:
WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2
Megjegyzés: A Java fordító belsőleg hozzáadja az értékeket(), valueOf() és ordinal() metódusokat az enumon belül a fordításkor. Belsőleg létrehoz egy statikus és végső osztályt az enum számára.
Mi a célja a value() metódusnak az enumban?
A Java fordító belsőleg hozzáadja a Values() metódust, amikor enum-ot hoz létre. A Values() metódus az enum összes értékét tartalmazó tömböt ad vissza.
java véletlen szám
Mi a célja a valueOf() metódusnak az enumban?
A Java fordító belsőleg hozzáadja a valueOf() metódust, amikor enum-ot hoz létre. A valueOf() metódus az adott konstans enum értékét adja vissza.
Mi a célja az ordinal() metódusnak az enumban?
A Java fordító belsőleg hozzáadja az ordinal() metódust, amikor enum-ot hoz létre. Az ordinal() metódus az enum érték indexét adja vissza.
Java Enum meghatározása
Az enum definiálható az osztályon belül vagy kívül, mert hasonlít egy osztályhoz. A pontosvessző (;) az enum állandók végén nem kötelező. Például:
enum Season { WINTER, SPRING, SUMMER, FALL }
Vagy,
enum Season { WINTER, SPRING, SUMMER, FALL; }
A Java enum mindkét definíciója megegyezik.
Java Enum Példa: osztályon kívül definiált
enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }}Tesztelje most
Kimenet:
WINTER
Java Enum Példa: Osztályon belül definiálva
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); }}Tesztelje most
Kimenet:
WINTER
Java Enum Példa: fő metódus az Enumon belül
Ha a main() metódust az enumba teszed, akkor az enumot közvetlenül is futtathatod.
enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } }
Kimenet:
WINTER
Adott értékek inicializálása az enum állandókhoz
Az enum állandók kezdeti értéke 0, 1, 2, 3 és így tovább. De inicializálhatjuk a konkrét értéket az enum állandókhoz mezők és konstruktorok definiálásával. A korábban meghatározottak szerint, az Enum tartalmazhat mezőket, konstruktorokat és metódusokat.
Példa az enum állandók kezdeti értékének megadására
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); }}Tesztelje most
Kimenet:
java generikusok
WINTER 5 SPRING 10 SUMMER 15 FALL 20
Az enum típusú konstruktor privát. Ha nem deklarálja a privát fordító, belsőleg létrehozza a privát konstruktort.
enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } }
A fordító által generált belső kód a fenti enum típusú példához
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 }); } }
Létrehozhatjuk az Enum példányát új kulcsszóval?
Nem, mert csak magánépítőket tartalmaz. |
Lehet-e absztrakt módszer az Enumban?
Természetesen! rendelkezhetünk absztrakt módszerekkel, és biztosítani tudjuk e módszerek megvalósítását.
Java Enum egy switch utasításban
Alkalmazhatjuk az enum-ot a switch utasításra, mint az adott példában:
Példa az Enum alkalmazására switch utasításra
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'); } }}Tesztelje most
Kimenet:
monday