Dopasowanie wzorców w switch
Zastąp łańcuchy if-else instanceof czystymi wzorcami typów w switch.
Porównanie kodu
✕ 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ć.
Dlaczego nowoczesne podejście wygrywa
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
Wsparcie JDK
Dopasowanie wzorców w switch
Dostępne
Szeroko dostępne od JDK 21 LTS (wrzesień 2023)
Jak to działa
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ść.
Powiązana dokumentacja
Dowód