Language Intermediário

Adicione condições aos cases de padrões usando guardas 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";
};
Viu um problema com este código? Nos avise.
🎯

Correspondência precisa

Combine tipo + condição em um único rótulo de case.

📐

Estrutura plana

Sem if/else aninhado dentro dos cases do switch.

📖

Intenção legível

A cláusula when se lê como linguagem natural.

Abordagem Antiga
if aninhado
Abordagem Moderna
Cláusula when
Desde o JDK
21
Dificuldade
Intermediário
Padrões com guardas usando when
Disponível

Amplamente disponível desde o JDK 21 LTS (set 2023)

Padrões com guardas permitem refinar uma correspondência de tipo com uma condição booleana adicional. Isso mantém toda a lógica de ramificação no switch em vez de aninhar instruções if dentro dos cases.

Compartilhar 𝕏 🦋 in