Pattern matching em switch
Substitua cadeias de if-else com instanceof por padrões de tipo limpos no switch.
Comparação de Código
✕ Java 8
String format(Object obj) {
if (obj instanceof Integer i)
return "int: " + i;
else if (obj instanceof Double d)
return "double: " + d;
else if (obj instanceof String s)
return "str: " + s;
return "unknown";
}
✓ Java 21+
String format(Object obj) {
return switch (obj) {
case Integer i -> "int: " + i;
case Double d -> "double: " + d;
case String s -> "str: " + s;
default -> "unknown";
};
}
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Despacho estruturado
O switch torna a estrutura de ramificação explícita e fácil de ler.
Forma de expressão
Retorna um valor diretamente — sem necessidade de variável mutável.
Exaustividade
O compilador garante que todos os tipos estão tratados.
Abordagem Antiga
Cadeia de if-else
Abordagem Moderna
Padrões de tipo
Desde o JDK
21
Dificuldade
Intermediário
Suporte JDK
Pattern matching em switch
Disponível
Amplamente disponível desde o JDK 21 LTS (set 2023)
Como funciona
O pattern matching em switch permite corresponder tipos diretamente, combinando o teste de tipo, cast e vinculação em um rótulo de case conciso. O compilador verifica a completude.
Documentação Relacionada