Java enum & enum Class (med eksempler)

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 enumnø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 finalsom 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 intkonstanter.

 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.

Interessante artikler...