Correspondência de padrões
instanceof com variável, switch sobre tipos, padrões de record e guardas.
Correspondência de padrões: chega de instanceof e de cast
Toda base de código Java 8 contém esta sequência, muitas vezes centenas de vezes: um instanceof, uma chave, um cast para o tipo que acabou de ser testado, uma variável local nomeada às pressas. Três linhas para uma única ideia. A repetição é mecânica, então não chama atenção, e é justamente por isso que é perigosa: no dia em que você copia e cola o ramo Cercle para escrever o ramo Rectangle e esquece de trocar o cast, surge um ClassCastException em tempo de execução em um código que a revisão havia aprovado.
A correspondência de padrões elimina a redundância ao fundir o teste e a extração. Você não diz mais "se é um círculo, então trate-o como um círculo"; você diz "se este valor tem a forma de um círculo de raio r". O cast desaparece do código-fonte, e com ele desaparece a possibilidade de erro de cast. Combinado com os records e as classes seladas vistos anteriormente, o mecanismo vai mais longe: ele permite que o compilador recuse um tratamento incompleto.
instanceof com padrão de tipo
É a adição de retorno mais imediato, disponível desde o Java 16.
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão