Tech Archive Help

13 Java – Enumerationen

Enumerationen sind spezielle Klassen, welche mit dem Keyword enum gebildet werden. Sie repräsentieren eine Ansammlung von Konstanten – also unveränderliche Variablen. Jedes Element darf nur einmal vorkommen. Enumerationen werden meistens wie Top-Level-Klassen in eigenen Dateien geschrieben, können aber auch direkt in einer Klasse definiert werden.

public enum Direction { NORTH, SOUTH EAST, WEST }

Die Werte innerhalb von Enumerationen sind statisch. Sie werden also über den Klassennamen angesprochen.

Direction.NORTH

Erweiterte Enumerationen

Auch Enumerationen können Konstruktoren haben. Diese Art von Enumerationen werden auch Advanced Enumerations genannt.

public enum Element { GOLD("Au"), IRON("Fe"), TITANIUM("Ti"); private final String symbol; public Element(String symbol) { this.symbol = symbol; } public String getSymbol() { return this.symbol; } }

Methoden

Jede Klasse erbt intern bekanntlich von der Klasse Object. Jede Enumeration erbt von der Klasse Enum, welche wiederum von der Klasse Object erbt. Somit können auch hier Methoden wie die toString()-Methode überschrieben werden. Die toString()-Methode ruft die name()-Methode auf. Diese kann nicht überschrieben werden.

Die Methode values() ist statisch und liefert alle Elemente einer Enumeration als Array. Diese können dann in einer Schleife durchlaufen werden.

public static void main(String[] args) { for (Element element : Element.values()) { System.out.println(element); } }

Die Methode ordinal() gibt die Ordinalzahl (Ordnungszahl) des jeweiligen Elements zurück. Die Position des Elements entspricht der Ordnungszahl beginnend bei 0. Die compareTo()-Methode vergleicht Aufzählungswerte über die Differenz der Ordinalzahlen.

Die valueOf()-Methode gibt den Datentyp der spezifischen Enum-Konstante über den jeweiligen Namen zurück. Der String muss genau mit dem Identifier der Konstanten übereinstimmen, der während der Deklarierung dieser Enumerationskonstante an sie vergeben wurde.

public static void main(String[] args) { Element element = Element.valueOf("GOLD"); }

Methodenüberschreibung bei Enumerationen

Jede Enum-Konstante ist eine Instanz der Enum-Klasse. Diese Konstanten bieten die Möglichkeit, neben den gemeinsamen Methoden, die alle Konstanten verwenden können, auch Methoden zu überschreiben oder spezifische Implementierungen hinzuzufügen.

public enum Operation { ADDITION { @Override public double apply(double x, double y) { return x + y; } }, SUBTRACTION { @Override public double apply(double x, double y) { return x - y; } }; public abstract double apply(double x, double y); }
Last modified: 07 October 2024