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.








