Padrões com guardas usando when
Adicione condições aos cases de padrões usando guardas when.
Comparação de Código
✕ 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.
Por que a forma moderna ganha
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
Suporte JDK
Padrões com guardas usando when
Disponível
Amplamente disponível desde o JDK 21 LTS (set 2023)
Como funciona
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.
Documentação Relacionada