Language Średniozaawansowany

Zastąp łańcuchy if-else instanceof czystymi wzorcami typów w switch.

✕ 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";
    };
}
Widzisz problem z tym kodem? Daj nam znać.
📐

Ustrukturyzowany dispatch

Switch sprawia, że struktura rozgałęzień jest jawna i czytelna.

🎯

Forma wyrażenia

Zwraca wartość bezpośrednio — nie potrzeba zmiennej mutowalnej.

Wyczerpywalność

Kompilator zapewnia obsłużenie wszystkich typów.

Stare podejście
Łańcuch if-else
Nowoczesne podejście
Wzorce typów
Od JDK
21
Poziom trudności
Średniozaawansowany
Dopasowanie wzorców w switch
Dostępne

Szeroko dostępne od JDK 21 LTS (wrzesień 2023)

Dopasowanie wzorców w switch pozwala dopasowywać typy bezpośrednio, łącząc test typu, rzutowanie i powiązanie w jednej zwięzłej etykiecie case. Kompilator sprawdza kompletność.