Pattern Matching im switch
if-else-instanceof-Ketten durch saubere Switch-Typ-Muster ersetzen.
Code-Vergleich
✕ Java 8
String format(Object obj) {
if (obj instanceof Integer i)
return "int: " + i;
else if (obj instanceof Double d)
return "double: " + d;
else if (obj instanceof String s)
return "str: " + s;
return "unknown";
}
✓ Java 21+
String format(Object obj) {
return switch (obj) {
case Integer i -> "int: " + i;
case Double d -> "double: " + d;
case String s -> "str: " + s;
default -> "unknown";
};
}
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Strukturiertes Dispatch
Switch macht die Verzweigungsstruktur explizit und übersichtlich.
Ausdrucksform
Gibt einen Wert direkt zurück – keine veränderliche Variable nötig.
Erschöpfungsprüfung
Der Compiler stellt sicher, dass alle Typen behandelt werden.
Alter Ansatz
if-else-Kette
Moderner Ansatz
Typ-Muster
Seit JDK
21
Schwierigkeitsgrad
Fortgeschritten
JDK-Unterstützung
Pattern Matching im switch
Verfügbar
Seit JDK 21 LTS allgemein verfügbar (Sept. 2023)
Wie es funktioniert
Pattern Matching im switch ermöglicht die direkte Typabgleichung, wobei Typtest, Cast und Bindung in einem prägnanten case-Label kombiniert werden. Der Compiler prüft die Vollständigkeit.
Zugehörige Dokumentation