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