Clases sealed para jerarquías de tipos
Restringe qué clases pueden extender un tipo — habilitando switches exhaustivos.
Comparación de Código
✕ Java 8
// Anyone can extend Shape
public abstract class Shape { }
public class Circle extends Shape { }
public class Rect extends Shape { }
// unknown subclasses possible
✓ Java 17+
public sealed interface Shape
permits Circle, Rect {}
public record Circle(double r)
implements Shape {}
public record Rect(double w, double h)
implements Shape {}
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Jerarquía controlada
Solo los subtipos permitidos pueden extender — sin subclases sorpresa.
Coincidencia exhaustiva
El compilador verifica que el switch cubre todos los casos, sin necesidad de default.
Tipos de datos algebraicos
Modela tipos suma de forma natural — sealed + records = ADTs en Java.
Enfoque Antiguo
Jerarquía abierta
Enfoque Moderno
sealed permits
Desde JDK
17
Dificultad
Intermedio
Soporte JDK
Clases sealed para jerarquías de tipos
Disponible
Ampliamente disponible desde JDK 17 LTS (sept. 2021)
Cómo funciona
Las clases sealed definen un conjunto cerrado de subtipos. El compilador conoce todos los casos posibles, lo que permite pattern matching exhaustivo sin una rama default. Combinadas con records, modelan tipos de datos algebraicos.
Documentación Relacionada