Language Intermediário

Restrinja quais classes podem estender um tipo — possibilitando switches exaustivos.

✕ 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 {}
Viu um problema com este código? Nos avise.
🔐

Hierarquia controlada

Apenas subtipos permitidos podem estender — sem subclasses surpresa.

Correspondência exaustiva

O compilador verifica que o switch cobre todos os casos, sem default necessário.

📐

Tipos de dados algébricos

Modele tipos soma naturalmente — sealed + records = ADTs em Java.

Abordagem Antiga
Hierarquia aberta
Abordagem Moderna
sealed permits
Desde o JDK
17
Dificuldade
Intermediário
Classes sealed para hierarquias de tipos
Disponível

Amplamente disponível desde o JDK 17 LTS (set 2021)

Classes sealed definem um conjunto fechado de subtipos. O compilador conhece todos os casos possíveis, permitindo pattern matching exaustivo sem um branch default. Combinadas com records, elas modelam tipos de dados algébricos.

Compartilhar 𝕏 🦋 in