Language Intermedio

Aggiungi condizioni ai case del pattern usando le guardie 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";
};
Vedi un problema con questo codice? Faccelo sapere.
🎯

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
Pattern con guardia tramite when
Disponibile

Ampiamente disponibile dal JDK 21 LTS (settembre 2023)

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.

Condividi 𝕏 🦋 in