Language Intermédiaire

Ajoutez des conditions aux cas d'un pattern en utilisant des gardes when.

✕ 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.
🎯

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
Patterns avec gardes when
Disponible

Disponible depuis JDK 21 LTS (sept. 2023)

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.

Partager 𝕏 🦋 in