I denne opplæringen vil vi lære om enums i Java. Vi vil lære å lage og bruke enums og enum-klasser ved hjelp av eksempler.
I Java er en enum (kort for oppregning) en type som har et fast sett med konstante verdier. Vi bruker enum
nøkkelordet for å erklære enums. For eksempel,
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )
Her har vi opprettet en enum som heter Size. Den inneholder faste verdier SMÅ, MEDIUM, STOR og EKSTRA.
Disse verdiene inne i selene kalles enum konstanter (verdier).
Merk: Enumkonstantene er vanligvis representert med store bokstaver.
Eksempel 1: Java Enum
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Main ( public static void main(String() args) ( System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); ) )
Produksjon
LITEN MEDIUM
Som vi kan se fra eksemplet ovenfor, bruker vi enumnavnet for å få tilgang til de konstante verdiene.
Vi kan også lage variabler av enumtyper. For eksempel,
Size pizzaSize;
Her er pizzaSize en variabel av størrelsestypen. Den kan bare tildeles med 4 verdier.
pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;
Eksempel 2: Java Enum med bryteruttalelsen
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Test ( Size pizzaSize; public Test(Size pizzaSize) ( this.pizzaSize = pizzaSize; ) public void orderPizza() ( switch(pizzaSize) ( case SMALL: System.out.println("I ordered a small size pizza."); break; case MEDIUM: System.out.println("I ordered a medium size pizza."); break; default: System.out.println("I don't know which one to order."); break; ) ) ) class Main ( public static void main(String() args) ( Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); ) )
Produksjon
Jeg bestilte en mellomstor pizza.
I det ovennevnte programmet har vi laget en type type størrelse. Vi erklærte da en variabel pizzaSize av størrelsestypen.
Her kan variabelen pizzaSize kun tildeles med 4 verdier (SMALL, MEDIUM, LARGE, EXTRALARGE).
Legg merke til uttalelsen,
Test t1 = new Test(Size.MEDIUM);
Det vil kalle Test()
konstruktøren inne i testklassen. Nå tildeles den variable pizzaSize med MEDIUM-konstanten.
Basert på verdien, utføres en av tilfellene av byttesakssetningen.
Enum Class i Java
I Java anses enumtyper å være en spesiell type klasse. Den ble introdusert med utgivelsen av Java 5.
En enum-klasse kan inneholde metoder og felt akkurat som vanlige klasser.
enum Size ( constant1, constant2,… , constantN; // methods and fields )
Når vi oppretter en enumklasse, vil kompilatoren opprette forekomster (objekter) av hver enumkonstant. Også hele enumkonstanten er alltid public static final
som standard.
Eksempel 3: Java Enum Class
enum Size( SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() ( // this will refer to the object SMALL switch(this) ( case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; ) ) public static void main(String() args) ( // call getSize() // using the object SMALL System.out.println("The size of the pizza is " + Size.SMALL.getSize()); ) )
Produksjon
Størrelsen på pizzaen er liten
I eksemplet ovenfor har vi opprettet en enum class Size. Den har fire konstanter SMÅ, MEDIUM, STOR og EKSTRA.
Siden Size er en enum-klasse, oppretter kompilatoren automatisk forekomster for hver enum-konstant.
Her inne i main()
metoden har vi brukt forekomsten SMALL til å kalle getSize()
metoden.
Merk : Som vanlige klasser, kan en enum-klasse også omfatte konstruktører. For å lære mer om det, besøk Java enum constructor.
Metoder for Java Enum Class
Det er noen forhåndsdefinerte metoder i enumklasser som er lett tilgjengelige for bruk.
1. Java Enum ordinal ()
Den ordinal()
metoden returnerer posisjonen til en enum konstant. For eksempel,
ordinal(SMALL) // returns 0
2. Enum CompareTo ()
Den compareTo()
metode sammenligner enum konstantene basert på deres ordensverdi. For eksempel,
Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)
3. Enum toString ()
Den toString()
metoden returnerer strengen representasjon av enum konstanter. For eksempel,
SMALL.toString() // returns "SMALL"
4. Enum navn ()
Den name()
metoden returnerer den definerte navnet på en enum konstant i strengform. Den returnerte verdien fra name()
metoden er final
. For eksempel,
name(SMALL) // returns "SMALL"
5. Java Enum valueOf ()
Den valueOf()
metoden tar en streng og returnerer en enum konstanten har den samme strengen navn. For eksempel,
Size.valueOf("SMALL") // returns constant SMALL.
6. Enumverdier ()
Den values()
metoden returnerer en matrise av enum type som inneholder alle de enum konstanter. For eksempel,
Size() enumArray = Size.value();
Hvorfor Java Enums?
I Java ble enum introdusert for å erstatte bruken av int-konstanter .
Anta at vi har brukt en samling int
konstanter.
class Size ( public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; )
Her oppstår problemet hvis vi skriver ut konstantene. Det er fordi bare tallet skrives ut som kanskje ikke er nyttig.
Så, i stedet for å bruke int-konstanter, kan vi bare bruke enums. For eksempel,
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )
Dette gjør koden vår mer intuitiv.
Enum gir også typesikkerhet for kompileringstid .
Hvis vi deklarerer en variabel av størrelsestypen. For eksempel,
Size size;
Her er det garantert at variabelen holder en av de fire verdiene. Nå, hvis vi prøver å overføre andre verdier enn de fire verdiene, vil kompilatoren generere en feil.