Classi sealed per gerarchie di tipi
Limita le classi che possono estendere un tipo — abilitando switch esaustivi.
Confronto Codice
✕ 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 {}
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Gerarchia controllata
Solo i sottotipi consentiti possono estendere — nessuna sottoclasse a sorpresa.
Matching esaustivo
Il compilatore verifica che lo switch copra tutti i casi, senza default necessario.
Tipi di dati algebrici
Modella i tipi somma in modo naturale — sealed + record = ADT in Java.
Approccio Vecchio
Gerarchia aperta
Approccio Moderno
sealed permits
Dal JDK
17
Difficoltà
Intermedio
Supporto JDK
Classi sealed per gerarchie di tipi
Disponibile
Ampiamente disponibile dal JDK 17 LTS (settembre 2021)
Come funziona
Le classi sealed definiscono un insieme chiuso di sottotipi. Il compilatore conosce tutti i casi possibili, abilitando il pattern matching esaustivo senza un ramo default. Combinate con i record, modellano i tipi di dati algebrici.
Documentazione Correlata