Language Fortgeschritten

if-else-instanceof-Ketten durch saubere Switch-Typ-Muster ersetzen.

✕ 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.
📐

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
Pattern Matching im switch
Verfügbar

Seit JDK 21 LTS allgemein verfügbar (Sept. 2023)

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.

Teilen 𝕏 🦋 in