Language Intermedio

Limita le classi che possono estendere un tipo — abilitando switch esaustivi.

✕ 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.
🔐

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
Classi sealed per gerarchie di tipi
Disponibile

Ampiamente disponibile dal JDK 17 LTS (settembre 2021)

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.

Condividi 𝕏 🦋 in