Bewachte Muster mit when
Bedingungen zu Pattern-Fällen mit when-Wächtern hinzufügen.
Code-Vergleich
✕ Java 8
if (shape instanceof Circle c) {
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";
};
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Präzises Matching
Typ + Bedingung in einem einzigen case-Label kombinieren.
Flache Struktur
Keine verschachtelten if/else in Switch-Fällen.
Lesbare Absicht
Die when-Klausel liest sich wie natürliche Sprache.
Alter Ansatz
Verschachteltes if
Moderner Ansatz
when-Klausel
Seit JDK
21
Schwierigkeitsgrad
Fortgeschritten
JDK-Unterstützung
Bewachte Muster mit when
Verfügbar
Seit JDK 21 LTS allgemein verfügbar (Sept. 2023)
Wie es funktioniert
Bewachte Muster ermöglichen es, einen Typ-Match mit einer zusätzlichen booleschen Bedingung zu verfeinern. Dadurch bleibt die gesamte Verzweigungslogik im Switch, anstatt if-Anweisungen in Fällen zu verschachteln.
Zugehörige Dokumentation