Wzorce chronione z when
Dodaj warunki do przypadków wzorców używając strażników when.
Porównanie kodu
✕ Java 8
if (shape instanceof Circle) {
Circle c = (Circle) shape;
if (c.radius() > 10) {
return "large circle";
} else {
return "small circle";
}
} else {
return "not a circle";
}
✓ Java 21+
return switch (shape) {
case Circle c
when c.radius() > 10
-> "large circle";
case Circle c
-> "small circle";
default -> "not a circle";
};
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Precyzyjne dopasowanie
Łącz typ i warunek w jednej etykiecie case.
Płaska struktura
Żadnych zagnieżdżonych if/else wewnątrz przypadków switch.
Czytelny zamiar
Klauzula when czyta się jak język naturalny.
Stare podejście
Zagnieżdżone if
Nowoczesne podejście
Klauzula when
Od JDK
21
Poziom trudności
Średniozaawansowany
Wsparcie JDK
Wzorce chronione z when
Dostępne
Szeroko dostępne od JDK 21 LTS (wrzesień 2023)
Jak to działa
Wzorce chronione pozwalają doprecyzować dopasowanie typów za pomocą dodatkowego warunku boolowskiego. Dzięki temu cała logika rozgałęzień pozostaje w switch zamiast zagnieżdżonych instrukcji if wewnątrz przypadków.
Powiązana dokumentacja
Dowód