logo

Java Enums

Det Enum i Java er en datatype, som indeholder et fast sæt konstanter.

Den kan bruges til ugens dage (SØNDAG, MANDAG, TIRSDAG, ONSDAG, TORSDAG, FREDAG og LØRDAG), retninger (NORD, SYD, ØST og VEST), sæson (FÅR, SOMMER, VINTER og EFTERÅR eller EFTERÅR) ), farver (RØD, GUL, BLÅ, GRØN, HVID og SORT) osv. Ifølge Javas navnekonventioner skal vi have alle konstanter med store bogstaver. Så vi har enum-konstanter med store bogstaver.

Java Enums kan opfattes som klasser, der har et fast sæt konstanter (en variabel, der ikke ændres). Java-enum-konstanterne er statiske og endelige implicit. Den er tilgængelig siden JDK 1.5.

java sammenligne streng

Enums bruges til at skabe vores egen datatype som klasser. Det enum datatype (også kendt som Enumerated Data Type) bruges til at definere en enum i Java. I modsætning til C/C++ er enum i Java mere magtfulde . Her kan vi definere en enum enten inde i klassen eller uden for klassen.

Java Enum arver internt Enum klasse , så den kan ikke arve nogen anden klasse, men den kan implementere mange grænseflader. Vi kan have felter, konstruktører, metoder og hovedmetoder i Java enum.

Punkter at huske for Java Enum

  • Enum forbedrer typesikkerheden
  • Enum kan nemt bruges i switch
  • Enum kan krydses
  • Enum kan have felter, konstruktører og metoder
  • Enum kan implementere mange grænseflader, men kan ikke udvide nogen klasse, fordi den internt udvider Enum-klassen
Java Enum Points

Simpelt eksempel på 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); }} 
Test det nu

Produktion:

 WINTER SPRING SUMMER FALL 

Lad os se et andet eksempel på Java enum, hvor vi bruger value(), valueOf() og ordinal() metoder til Java enum.

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

Produktion:

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

Bemærk: Java-kompiler tilføjer internt værdier(), valueOf() og ordinal()-metoder inden for enum på kompileringstidspunktet. Det skaber internt en statisk og endelig klasse for enummet.

Hvad er formålet med values()-metoden i enum?

Java-kompileren tilføjer internt værdien()-metoden, når den opretter en enum. Metoden values() returnerer et array, der indeholder alle værdierne af enum.

replaceall i streng java

Hvad er formålet med valueOf()-metoden i enum?

Java-kompileren tilføjer internt valueOf()-metoden, når den opretter en enum. Metoden valueOf() returnerer værdien af ​​en given konstant enum.

Hvad er formålet med ordinal() metoden i enum?

Java-kompileren tilføjer internt metoden ordinal() når den opretter en enum. Ordinal()-metoden returnerer indekset for enum-værdien.


Definition af Java Enum

Enumen kan defineres inden for eller uden for klassen, fordi den ligner en klasse. Semikolonet (;) i slutningen af ​​enum-konstanterne er valgfrie. For eksempel:

 enum Season { WINTER, SPRING, SUMMER, FALL } 

Eller,

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

Begge definitioner af Java enum er de samme.

Java Enum Eksempel: Defineret uden for klasse

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

Produktion:

 WINTER 

Java Enum Eksempel: Defineret inde i klassen

 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); }} 
Test det nu

Produktion:

 WINTER 

Java Enum Eksempel: hovedmetode inde i Enum

Hvis du sætter main()-metoden inde i enum, kan du køre enum direkte.

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

Produktion:

 WINTER 

Initialisering af specifikke værdier til enum-konstanterne

Enum-konstanterne har en startværdi, som starter fra 0, 1, 2, 3 og så videre. Men vi kan initialisere den specifikke værdi til enum-konstanterne ved at definere felter og konstruktører. Som angivet tidligere kan Enum have felter, konstruktører og metoder.

Eksempel på angivelse af startværdi til enum-konstanter

 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); }} 
Test det nu

Produktion:

min live cricket
 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Konstruktør af enum type er privat. Hvis du ikke erklærer private compiler internt opretter private constructor.

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

Intern kode genereret af compileren til ovenstående eksempel på enum type

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

Kan vi oprette forekomsten af ​​Enum efter nyt søgeord?

Nej, fordi den kun indeholder private konstruktører.

Kan vi have en abstrakt metode i Enum?

Ja selvfølgelig! vi kan have abstrakte metoder og kan levere implementeringen af ​​disse metoder.


Java Enum i en switch-erklæring

Vi kan anvende enum på switch-sætning som i det givne eksempel:

Eksempel på anvendelse af Enum på en switch-sætning

 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'); } }} 
Test det nu

Produktion:

 monday