HeadlinesBriefing HeadlinesBriefing.com

Guía de Sealed Classes y Coincidencia Exhaustiva en Java

Hacker News •
×

Java 17 introdujo sealed classes, que permiten a los desarrolladores listar explícitamente los subtipos permitidos de una interfaz o clase. Esta característica habilita exhaustive pattern matching, permitiendo al compilador verificar que todos los casos están cubiertos en una expresión switch sin necesidad de una cláusula default. Por ejemplo, una sealed interface `SealedType` con subtipos `TypeA` y `TypeB` puede usarse en una expresión switch que solo maneje esos dos casos, eliminando la necesidad de un caso por defecto.

Sin embargo, esto introduce un nuevo tipo de cambio destructivo: agregar un nuevo subtipo a una sealed class romperá el código de los consumidores si no lo recompilan. Si el consumidor no se recompila, puede ocurrir una excepción en tiempo de ejecución (como `MatchException`) cuando se active el nuevo caso. Esto es especialmente problemático cuando los sealed types se exponen en APIs públicas, ya que la compilación separada puede provocar fallos no detectados.

Los sealed types son más útiles dentro de la implementación de un solo componente, donde todo el código se recompila junto. Cuando se usan entre límites de módulos, pueden introducir nuevas formas de romper el código que solo se detectan en tiempo de ejecución. Los desarrolladores deben considerar cuidadosamente si los sealed types son apropiados para APIs públicas.

Fuente: Hacker News · Resumido por HeadlinesBriefing