Pattern con guardia tramite when
Aggiungi condizioni ai case del pattern usando le guardie when.
Confronto Codice
✕ 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";
};
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Corrispondenza precisa
Combina tipo + condizione in un'unica etichetta case.
Struttura piatta
Nessun if/else annidato all'interno dei case dello switch.
Intento leggibile
La clausola when si legge come linguaggio naturale.
Approccio Vecchio
if annidato
Approccio Moderno
Clausola when
Dal JDK
21
Difficoltà
Intermedio
Supporto JDK
Pattern con guardia tramite when
Disponibile
Ampiamente disponibile dal JDK 21 LTS (settembre 2023)
Come funziona
I pattern con guardia permettono di affinare una corrispondenza di tipo con una condizione booleana aggiuntiva. Questo mantiene tutta la logica di branching nello switch invece di annidare istruzioni if all'interno dei case.
Documentazione Correlata