Patterns avec gardes when
Ajoutez des conditions aux cas d'un pattern en utilisant des gardes when.
Comparaison de Code
✕ 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";
};
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Correspondance précise
Combine type + condition dans une seule étiquette de cas.
Structure plate
Sans if/else imbriqués à l'intérieur des cas du switch.
Intention lisible
La clause when se lit comme un langage naturel.
Ancienne Approche
if imbriqué
Approche Moderne
Clause when
Depuis JDK
21
Difficulté
Intermédiaire
Support JDK
Patterns avec gardes when
Disponible
Disponible depuis JDK 21 LTS (sept. 2023)
Comment ça fonctionne
Les patterns avec gardes permettent de raffiner une correspondance de type avec une condition booléenne supplémentaire. Cela maintient toute la logique de branchement dans le switch plutôt que d'imbriquer des instructions if dans les cas.
Documentation Associée