logo

Java Enums

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
Java Enum pontok

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