Java Enums
opsommingen
An enum
is een speciale "klasse" die een groep
constanten vertegenwoordigt (onveranderlijke variabelen, zoals final
variabelen).
Om een te maken enum
, gebruikt u het enum
sleutelwoord (in plaats van klasse of interface) en scheidt u de constanten met een komma. Merk op dat ze in hoofdletters moeten zijn:
Voorbeeld
enum Level {
LOW,
MEDIUM,
HIGH
}
U hebt toegang tot enum
constanten met de puntsyntaxis :
Level myVar = Level.MEDIUM;
Enum is een afkorting voor "enumerations", wat "specifiek vermeld" betekent.
Enum binnen een klasse
Je kunt ook een enum
binnen een klas hebben:
Voorbeeld
public class Main {
enum Level {
LOW,
MEDIUM,
HIGH
}
public static void main(String[] args) {
Level myVar = Level.MEDIUM;
System.out.println(myVar);
}
}
De uitvoer zal zijn:
MEDIUM
Enum in een Switch-verklaring
Enums worden vaak gebruikt in switch
statements om te controleren op corresponderende waarden:
Voorbeeld
enum Level {
LOW,
MEDIUM,
HIGH
}
public class Main {
public static void main(String[] args) {
Level myVar = Level.MEDIUM;
switch(myVar) {
case LOW:
System.out.println("Low level");
break;
case MEDIUM:
System.out.println("Medium level");
break;
case HIGH:
System.out.println("High level");
break;
}
}
}
De uitvoer zal zijn:
Medium level
Loop door een Enum
Het enum-type heeft een values()
methode die een array van alle enum-constanten retourneert. Deze methode is handig als u de constanten van een opsomming wilt doorlopen:
Voorbeeld
for (Level myVar : Level.values()) {
System.out.println(myVar);
}
De uitvoer zal zijn:
LOW
MEDIUM
HIGH
Verschil tussen opsommingen en klassen
Een enum
can heeft, net als een class
, attributen en methoden. Het enige verschil is dat enum-constanten zijn public
, static
en final
(onveranderlijk - kan niet worden overschreven).
An enum
kan niet worden gebruikt om objecten te maken en kan geen andere klassen uitbreiden (maar kan wel interfaces implementeren).
Waarom en wanneer Enums gebruiken?
Gebruik opsommingen als je waarden hebt waarvan je weet dat ze niet zullen veranderen, zoals maanddagen, dagen, kleuren, kaartspellen, enz.