HeadlinesBriefing HeadlinesBriefing.com

Guia de Classes Seladas e Correspondência Exhaustiva em Java

Hacker News •
×

Java 17 introduziu classes seladas, que permitem aos desenvolvedores listar explicitamente os subtipos permitidos de uma interface ou classe. Essa funcionalidade habilita a correspondência exaustiva, permitindo ao compilador verificar que todos os casos são cobertos em uma expressão switch sem necessidade de uma cláusula default. Por exemplo, uma interface selada `SealedType` com subtipos `TypeA` e `TypeB` pode ser usada em uma expressão switch que trata apenas esses dois casos, eliminando a necessidade de uma cláusula default.

No entanto, isso introduz um novo tipo de mudança destrutiva: adicionar um novo subtipo a uma classe selada quebrará o código dos consumidores se não for recompilado. Se o consumidor não for recompilado, uma exceção em tempo de execução (como `MatchException`) pode ocorrer quando o novo caso for acionado. Isso é particularmente problemático quando as classes seladas são expostas em APIs públicas, pois a compilação separada pode levar a falhas não detectadas.

Classes seladas são mais úteis na implementação de um único componente, onde todo o código é recompilado junto. Quando usadas entre limites de módulos, podem introduzir novas formas de quebrar o código que só são detectadas em tempo de execução. Os desenvolvedores devem considerar cuidadosamente se as classes seladas são apropriadas para APIs públicas.

Fonte: Hacker News · Resumido por HeadlinesBriefing