logo

Java Enums

De Enum i Java er en datatype som inneholder et fast sett med konstanter.

Den kan brukes for ukedager (SØNDAG, MANDAG, TIRSDAG, ONSDAG, TORSDAG, FREDAG og LØRDAG), retninger (NORD, SØR, ØST og VEST), sesong (VÅR, SOMMER, VINTER og HØST eller HØST) ), farger (RØD, GUL, BLÅ, GRØNN, HVIT og SVART) osv. I følge Javas navnekonvensjoner skal vi ha alle konstanter med store bokstaver. Så vi har enum-konstanter med store bokstaver.

Java Enums kan betraktes som klasser som har et fast sett med konstanter (en variabel som ikke endres). Java-enum-konstantene er statiske og endelige implisitt. Den er tilgjengelig siden JDK 1.5.

konverter byte array til streng

Enums brukes til å lage vår egen datatype som klasser. De enum datatype (også kjent som Enumerated Data Type) brukes til å definere en enum i Java. I motsetning til C/C++, er enum i Java mer kraftig . Her kan vi definere en enum enten i klassen eller utenfor klassen.

Java Enum arver internt Enum klasse , så den kan ikke arve noen annen klasse, men den kan implementere mange grensesnitt. Vi kan ha felt, konstruktører, metoder og hovedmetoder i Java enum.

Punkter å huske for Java Enum

  • Enum forbedrer typesikkerheten
  • Enum kan enkelt brukes i bryteren
  • Enum kan krysses
  • Enum kan ha felt, konstruktører og metoder
  • Enum kan implementere mange grensesnitt, men kan ikke utvide noen klasse fordi den internt utvider Enum-klassen
Java Enum-poeng

Enkelt 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 nå

Produksjon:

 WINTER SPRING SUMMER FALL 

La oss se et annet eksempel på Java enum hvor vi bruker metodene value(), valueOf() og ordinal() for 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()); }} 

Produksjon:

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

Merk: Java-kompilatoren legger internt til verdier(), valueOf() og ordinal()-metoder i enumet på kompileringstidspunktet. Det skaper internt en statisk og endelig klasse for enumen.

Hva er hensikten med values()-metoden i enum?

Java-kompilatoren legger internt til values()-metoden når den oppretter en enum. Verdiene()-metoden returnerer en matrise som inneholder alle verdiene til enum.

konvertere streng til int

Hva er hensikten med valueOf()-metoden i enum?

Java-kompilatoren legger internt til valueOf()-metoden når den oppretter en enum. VerdiOf()-metoden returnerer verdien av gitt konstant enum.

Hva er hensikten med ordinal()-metoden i enum?

Java-kompilatoren legger internt til ordinal()-metoden når den oppretter en enum. Ordinal()-metoden returnerer indeksen til enum-verdien.


Definere Java Enum

Enumen kan defineres innenfor eller utenfor klassen fordi den ligner på en klasse. Semikolonet (;) på slutten av enum-konstantene er valgfrie. For eksempel:

 enum Season { WINTER, SPRING, SUMMER, FALL } 

Eller,

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

Begge definisjonene av Java enum er de samme.

Java Enum Eksempel: Definert utenfor klassen

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

Produksjon:

 WINTER 

Java Enum Eksempel: Definert 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 nå

Produksjon:

 WINTER 

Java Enum Eksempel: hovedmetode inne i Enum

Hvis du legger main()-metoden inne i enum, kan du kjøre enum direkte.

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

Produksjon:

 WINTER 

Initialisere spesifikke verdier til enum-konstantene

Enum-konstantene har en startverdi som starter fra 0, 1, 2, 3 og så videre. Men vi kan initialisere den spesifikke verdien til enum-konstantene ved å definere felt og konstruktører. Som spesifisert tidligere, kan Enum ha felt, konstruktører og metoder.

Eksempel på spesifisering av startverdi til enum-konstantene

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

Produksjon:

min live cricket
 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Konstruktør av enum-type er privat. Hvis du ikke erklærer privat kompilator oppretter internt privat konstruktør.

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

Intern kode generert av kompilatoren for eksemplet ovenfor 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 opprette forekomsten av Enum etter nytt søkeord?

Nei, fordi den kun inneholder private konstruktører.

Kan vi ha en abstrakt metode i Enum?

Ja, selvfølgelig! vi kan ha abstrakte metoder og kan gi implementeringen av disse metodene.


Java Enum i en switch-setning

Vi kan bruke enum på switch-setningen som i det gitte eksemplet:

Eksempel på bruk av Enum på en switch-setning

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

Produksjon:

 monday