logo

Java Enums

De Enum i Java är en datatyp som innehåller en fast uppsättning konstanter.

Den kan användas för veckodagar (SÖNDAG, MÅNDAG, TISDAG, ONSDAG, TORSDAG, FREDAG och LÖRDAG), riktningar (NORD, SÖD, ÖST och VÄST), säsong (VÅR, SOMMAR, VINTER och HÖST eller HÖST). ), färger (RÖD, GUL, BLÅ, GRÖN, VIT och SVART) etc. Enligt Javas namnkonventioner ska vi ha alla konstanter med versaler. Så vi har enumkonstanter i versaler.

Java Enums kan ses som klasser som har en fast uppsättning konstanter (en variabel som inte ändras). Java enum-konstanter är statiska och slutgiltiga implicit. Den är tillgänglig sedan JDK 1.5.

central css-knapp

Enums används för att skapa vår egen datatyp som klasser. De uppräkning datatyp (även känd som Enumerated Data Type) används för att definiera en enum i Java. Till skillnad från C/C++ är enum i Java mer kraftfull . Här kan vi definiera en enum antingen inom klassen eller utanför klassen.

Java Enum ärver internt Enum klass , så den kan inte ärva någon annan klass, men den kan implementera många gränssnitt. Vi kan ha fält, konstruktörer, metoder och huvudmetoder i Java enum.

Punkter att komma ihåg för Java Enum

  • Enum förbättrar typsäkerheten
  • Enum kan enkelt användas i switch
  • Enum kan passeras
  • Enum kan ha fält, konstruktorer och metoder
  • Enum kan implementera många gränssnitt men kan inte utöka någon klass eftersom den internt utökar Enum-klassen
Java Enum Points

Enkelt exempel 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); }} 
Testa det nu

Produktion:

 WINTER SPRING SUMMER FALL 

Låt oss se ett annat exempel på Java enum där vi använder metoderna value(), valueOf() och ordinal() för 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 

Obs: Java-kompilatorn lägger internt till metoderna värden(), valueOf() och ordinal() inom enumen vid kompilering. Det skapar internt en statisk och slutlig klass för enumen.

Vad är syftet med values()-metoden i enumet?

Java-kompilatorn lägger internt till metoden values() när den skapar en enum. Metoden values() returnerar en array som innehåller alla värden i enum.

Vad är syftet med valueOf()-metoden i enum?

Java-kompilatorn lägger internt till metoden valueOf() när den skapar en enum. Metoden valueOf() returnerar värdet av en given konstant enum.

Vad är syftet med metoden ordinal() i enumet?

Java-kompilatorn lägger internt till metoden ordinal() när den skapar en enum. Ordinal()-metoden returnerar indexet för enumvärdet.


Definiera Java Enum

Enumen kan definieras inom eller utanför klassen eftersom den liknar en klass. Semikolonet (;) i slutet av enumkonstanterna är valfria. Till exempel:

 enum Season { WINTER, SPRING, SUMMER, FALL } 

Eller,

binär sökning i java
 enum Season { WINTER, SPRING, SUMMER, FALL; } 

Båda definitionerna av Java enum är desamma.

Java Enum Exempel: Definierat utanför klass

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

Produktion:

 WINTER 

Java Enum Exempel: Definierat 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); }} 
Testa det nu

Produktion:

 WINTER 

Java Enum Exempel: huvudmetod inuti Enum

Om du sätter in main()-metoden inuti enum, kan du köra enum direkt.

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

Produktion:

 WINTER 

Initiera specifika värden till enumkonstanterna

Uppräkningskonstanterna har ett initialt värde som börjar från 0, 1, 2, 3 och så vidare. Men vi kan initiera det specifika värdet till enumkonstanterna genom att definiera fält och konstruktorer. Som specificerats tidigare kan Enum ha fält, konstruktorer och metoder.

Exempel på angivande av initialvärde för enumkonstanter

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

Produktion:

sorteringsalgoritmer slå samman sortering
 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Konstruktör av enum-typ är privat. Om du inte deklarerar privat kompilator skapar internt privat konstruktor.

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

Intern kod genererad av kompilatorn för exemplet ovan av enum-typ

 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 skapa instansen av Enum med nytt nyckelord?

Nej, eftersom den endast innehåller privata konstruktörer.

Kan vi ha en abstrakt metod i Enum?

Ja självklart! vi kan ha abstrakta metoder och kan tillhandahålla implementeringen av dessa metoder.


Java Enum i en switch-sats

Vi kan tillämpa enum på switch-satsen som i det givna exemplet:

Exempel på att tillämpa Enum på en switch-sats

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

Produktion:

 monday