Java enum & enum Class (met voorbeelden)

In deze tutorial leren we over enums in Java. We zullen leren om enums en enum-klassen te maken en te gebruiken met behulp van voorbeelden.

In Java is een enum (afkorting van enumeration) een type met een vaste set constante waarden. We gebruiken het enumtrefwoord om enums te declareren. Bijvoorbeeld,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Hier hebben we een enum gemaakt met de naam Grootte. Het bevat vaste waarden SMALL, MEDIUM, LARGE en EXTRALARGE.

Deze waarden tussen de accolades worden opsommingsconstanten (waarden) genoemd.

Opmerking: de opsommingsconstanten worden meestal in hoofdletters weergegeven.

Voorbeeld 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); ) )

Uitvoer

 KLEIN MEDIUM

Zoals we in het bovenstaande voorbeeld kunnen zien, gebruiken we de enum-naam om toegang te krijgen tot de constante waarden.

We kunnen ook variabelen van opsommingstypen maken. Bijvoorbeeld,

 Size pizzaSize;

Hier is pizzaSize een variabele van het type Grootte. Het kan alleen worden toegewezen met 4 waarden.

 pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;

Voorbeeld 2: Java Enum met de instructie switch

 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(); ) )

Uitvoer

 Ik bestelde een middelgrote pizza.

In het bovenstaande programma hebben we een opsommingstype Grootte gemaakt. Vervolgens hebben we een variabele pizzaSize van het type Size gedeclareerd.

Hier kan aan de variabele pizzaSize slechts 4 waarden worden toegekend (SMALL, MEDIUM, LARGE, EXTRALARGE).

Let op de verklaring,

 Test t1 = new Test(Size.MEDIUM);

Het roept de Test()constructor binnen de klasse Test aan. Nu wordt aan de variabele pizzaSize de constante MEDIUM toegewezen.

Op basis van de waarde wordt een van de gevallen van de switchcase-instructie uitgevoerd.

Enum-klasse in Java

In Java worden enum-typen beschouwd als een speciaal type klasse. Het werd geïntroduceerd met de release van Java 5.

Een enum-klasse kan methoden en velden bevatten, net als gewone klassen.

 enum Size ( constant1, constant2,… , constantN; // methods and fields )

Wanneer we een enum-klasse maken, maakt de compiler instanties (objecten) van elke enum-constanten. Bovendien is alle enum-constante altijd public static finalstandaard.

Voorbeeld 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()); ) )

Uitvoer

 Het formaat van de pizza is klein

In het bovenstaande voorbeeld hebben we een enum-klasse gemaakt Grootte. Het heeft vier constanten SMALL, MEDIUM, LARGE en EXTRALARGE.

Omdat Size een enum-klasse is, maakt de compiler automatisch instanties voor elke enum-constanten.

Hier binnen de main()methode hebben we de instantie SMALL gebruikt om de getSize()methode aan te roepen .

Opmerking : net als gewone klassen kan een enum-klasse ook constructors bevatten. Bezoek Java enum constructor voor meer informatie.

Methoden van Java Enum Class

Er zijn een aantal voorgedefinieerde methoden in enum-klassen die direct beschikbaar zijn voor gebruik.

1. Java Enum ordinale ()

De ordinal()methode retourneert de positie van een opsommingsconstante. Bijvoorbeeld,

 ordinal(SMALL) // returns 0

2. Enum CompareTo ()

De compareTo()methode vergelijkt de enum-constanten op basis van hun ordinale waarde. Bijvoorbeeld,

 Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)

3. Enum toString ()

De toString()methode retourneert de tekenreeksweergave van de enum-constanten. Bijvoorbeeld,

 SMALL.toString() // returns "SMALL"

4. Enum naam ()

De name()methode retourneert de gedefinieerde naam van een enum-constante in tekenreeksvorm. De geretourneerde waarde van de name()methode is final. Bijvoorbeeld,

 name(SMALL) // returns "SMALL"

5. Java Enum valueOf ()

The valueOf() method takes a string and returns an enum constant having the same string name. For example,

 Size.valueOf("SMALL") // returns constant SMALL.

6. Enum values()

The values() method returns an array of enum type containing all the enum constants. For example,

 Size() enumArray = Size.value();

Why Java Enums?

In Java, enum was introduced to replace the use of int constants.

Suppose we have used a collection of int constants.

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

Here, the problem arises if we print the constants. It is because only the number is printed which might not be helpful.

So, instead of using int constants, we can simply use enums. For example,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

This makes our code more intuitive.

Also, enum provides compile-time type safety.

If we declare a variable of the Size type. For example,

 Size size;

Hier wordt gegarandeerd dat de variabele een van de vier waarden bevat. Als we nu andere waarden proberen door te geven dan die vier waarden, zal de compiler een fout genereren.

Interessante artikelen...