Enums – Grundlagen
Enums als typsichere Aufzählung: feste Werte definieren, verwenden und mit switch verarbeiten. Einsatzbereiche, Syntax und Best Practices in statischen Methoden (Utility-Klassen).
Ziele
- Ich kann in eigenen Worten erklären, was Enums sind und wann man sie nutzt.
- Ich kann ein Enum definieren und in Code korrekt verwenden (Zuweisung, Vergleich, switch).
- Ich kann alle Werte eines Enums iterieren (values) und den Namen ausgeben (name).
Enums – was und wofür?
Enums (von „enumeration“ / „Aufzählung“) fassen vordefinierte, feste Werte zu einem eigenen Datentyp zusammen. Typische Beispiele sind Wochentage, Himmelsrichtungen, Zustände (READY, RUNNING, FAILED).
Wann verwenden?
Wenn alle möglichen Werte zur Kompilierzeit bekannt sind und sich nicht dynamisch ändern.
Wichtigste Eigenschaften (Grundlagen):
- Enum-Konstanten sind typsicher (kein „magischer String“).
- Vergleich geht mit
==
(es sind einzelne, eindeutige Instanzen). - In
switch
können Enum-Werte direkt verwendet werden. values()
liefert alle Werte als Array;name()
liefert den Konstantennamen als String.
Hinweis: Intern sind Enums Spezialtypen. Die OOP-Details (Konstruktoren, Methoden) folgen im OOP-Modul.
Enums definieren
enum
kann top-level (außerhalb einer Klasse) oder innerhalb einer Klasse stehen.- Die erste Zeile enthält die Komma-Liste der Konstanten (Konvention: GROSSBUCHSTABEN).
Jede Enum-Konstante ist implizit public static final
.
Beispiel: Definition außerhalb einer Klasse
|
|
Beispiel: Definition innerhalb einer Klasse
|
|
Wann sind Enums besser als Strings?
Ohne Enums werden oft Strings für Zustände verwendet. Das ist fehleranfällig:
|
|
Mit Enums wird das typsicher und klarer:
|
|
Vorteile:
- Keine Tippfehler möglich (Compiler prüft).
- Methodenparameter sind klar dokumentiert (welche States erlaubt sind).
- Typsicherheit:
OrderState
kann nicht mitInvoiceState
verwechselt werden.
Alle Werte iterieren & Namen ausgeben
|
|

Merke: Wie
Strings
sind auch Enums
bereits Klassen. Was man damit noch so alles machen kann erfährst Du im
OOP-Module.Last modified September 1, 2025: Add enum intro to java basics (898e1dede)