Java Enums meesteren: complete gids tot Enums & Enum klassen
Java enums
In deze tutorial leren we over enums in Java. We leren enums en enum klassen creëren en gebruiken met behulp van voorbeelden.
In Java is een enum (kort voor enumeratie) een type dat een vaste set constante waarden heeft. We gebruiken het enum sleutelwoord om enums te declareren. Bijvoorbeeld,
enum Grootte { KLEIN, MEDIUM, GROOT, EXTRAGROOT }
Hier hebben we een enum genaamd Grootte gecreëerd. Het bevat vaste waarden KLEIN, MEDIUM, GROOT, en EXTRAGROOT.
Deze waarden binnen de accolades heten enum constanten (waarden).
Let op: De enum constanten worden meestal in hoofdletters weergegeven.
Voorbeeld 1: Java Enum
enum Grootte { KLEIN, MEDIUM, GROOT, EXTRAGROOT } class Main { public static void main(String[] args) { System.out.println(Grootte.KLEIN); System.out.println(Grootte.MEDIUM); } }
Uitvoer
KLEIN MEDIUM
Zoals we uit het bovenstaande voorbeeld zien, gebruiken we de enum naam om de constante waarden te benaderen.
Ook kunnen we variabelen van enum types creëren. Bijvoorbeeld,
Grootte pizzaGrootte;
Hier is pizzaGrootte een variabele van het Grootte type. Het kan alleen toegewezen worden met 4 waarden.
pizzaGrootte = Grootte.KLEIN; pizzaGrootte = Grootte.MEDIUM; pizzaGrootte = Grootte.GROOT; pizzaGrootte = Grootte.EXTRAGROOT;
Voorbeeld 2: Java Enum met de switch statement
enum Grootte { KLEIN, MEDIUM, GROOT, EXTRAGROOT } class Test { Grootte pizzaGrootte; public Test(Grootte pizzaGrootte) { this.pizzaGrootte = pizzaGrootte; } public void bestelPizza() { switch(pizzaGrootte) { case KLEIN: System.out.println("Ik heb een kleine pizza besteld."); break; case MEDIUM: System.out.println("Ik heb een medium pizza besteld."); break; default: System.out.println("Ik weet niet welke ik moet bestellen."); break; } } } class Main { public static void main(String[] args) { Test t1 = new Test(Grootte.MEDIUM); t1.bestelPizza(); } }
Uitvoer
Ik heb een medium pizza besteld.
In het bovenstaande programma hebben we een enum type Grootte gecreëerd. We declareerden dan een variabele pizzaGrootte van het Grootte type.
Hier kan de variabele pizzaGrootte alleen toegewezen worden met 4 waarden (KLEIN, MEDIUM, GROOT, EXTRAGROOT).
Let op de statement,
Test t1 = new Test(Grootte.MEDIUM);
Het zal de Test() constructor binnen de Test klasse aanroepen. Nu is de variabele pizzaGrootte toegewezen met de MEDIUM constante.
Gebaseerd op de waarde, wordt een van de cases van de switch statement uitgevoerd.
Enum klasse in Java
In Java worden enum types 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 Grootte { constant1, constant2, …, constantN; // methoden en velden }
Wanneer we een enum klasse creëren, zal de compiler instanties (objecten) van elke enum constanten creëren. Ook is elke enum constant altijd public static final standaard.
Voorbeeld 3: Java Enum klasse
enum Grootte{ KLEIN, MEDIUM, GROOT, EXTRAGROOT; public String getGrootte() { // dit zal refereren naar het object KLEIN switch(this) { case KLEIN: return "klein"; case MEDIUM: return "medium"; case GROOT: return "groot"; case EXTRAGROOT: return "extra groot"; default: return null; } } public static void main(String[] args) { // roep getGrootte() aan // gebruikmakend van het object KLEIN System.out.println("De grootte van de pizza is " + Grootte.KLEIN.getGrootte()); } }
Uitvoer
De grootte van de pizza is klein
In het bovenstaande voorbeeld hebben we een enum klasse Grootte gecreëerd. Het heeft vier constanten KLEIN, MEDIUM, GROOT en EXTRAGROOT.
Omdat Grootte een enum klasse is, creëert de compiler automatisch instanties voor elke enum constanten.
Hier binnen de main() methode hebben we de instantie KLEIN gebruikt om de getGrootte() methode aan te roepen.
Let op: Net als gewone klassen, kan een enum klasse ook constructors bevatten. Om er meer over te leren, bezoek Java enum constructor.
Methoden van Java Enum klasse
Er zijn een paar voorgedefinieerde methoden in enum klassen die direct beschikbaar zijn voor gebruik.
1. Java Enum ordinal()
De ordinal() methode retourneert de positie van een enum constant. Bijvoorbeeld,
ordinal(KLEIN) // retourneert 0
2. Enum compareTo()
De compareTo() methode vergelijkt de enum constanten gebaseerd op hun ordinale waarde. Bijvoorbeeld,
Grootte.KLEIN.compareTo(Grootte.MEDIUM) // retourneert ordinal(KLEIN) - ordinal(MEDIUM)
3. Enum toString()
De toString() methode retourneert de string representatie van de enum constanten. Bijvoorbeeld,
KLEIN.toString() // retourneert "KLEIN"
4. Enum name()
De name() methode retourneert de gedefinieerde naam van een enum constant in string vorm. De geretourneerde waarde van de name() methode is final. Bijvoorbeeld,
name(KLEIN) // retourneert "KLEIN"
5. Java Enum valueOf()
De valueOf() methode neemt een string en retourneert een enum constant met dezelfde string naam. Bijvoorbeeld,
Grootte.valueOf("KLEIN") // retourneert constant KLEIN.
6. Enum values()
De values() methode retourneert een array van enum type bevat alle enum constanten. Bijvoorbeeld,
Grootte[] enumArray = Grootte.values();
Waarom Java Enums?
In Java werd enum geïntroduceerd om het gebruik van int constanten te vervangen.
Stel we hebben een verzameling int constanten gebruikt.
class Grootte { public final static int KLEIN = 1; public final static int MEDIUM = 2; public final static int GROOT = 3; public final static int EXTRAGROOT = 4; }
Hier ontstaat het probleem als we de constanten printen. Het is omdat alleen het nummer geprint wordt wat misschien niet behulpzaam is.
Dus, in plaats van int constanten te gebruiken, kunnen we gewoon enums gebruiken. Bijvoorbeeld,
enum Grootte { KLEIN, MEDIUM, GROOT, EXTRAGROOT }
Dit maakt onze code intuïtiever.
Ook biedt enum compile-time type veiligheid.
Als we een variabele van het Grootte type declareren. Bijvoorbeeld,
Grootte grootte;
Hier is gegarandeerd dat de variabele een van de vier waarden zal houden. Nu, als we proberen waarden anders dan die vier door te geven, genereert de compiler een fout.
Java
- C Enums onder de knie krijgen: Definitie, declaratie en vlag-operaties
- Java-operators beheersen: typen, syntax en praktische voorbeelden
- Java-commentaar: typen, gebruik en best practices
- Java Enhanced For-lus beheersen: syntax, voorbeelden en best practices
- Java Strings beheersen: aanmaken, methodes en best practices
- Java interfaces meesteren: concepten, implementatie en best practices
- Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
- Java Enums meesteren: complete gids tot Enums & Enum klassen
- Java Enum constructors uitgelegd met praktisch voorbeeld
- String representaties in Java Enums meesteren
- Java Try-with-resources meesteren: automatische resource management uitgelegd