Classes sealed pour les hiérarchies de types
Restreignez quelles classes peuvent étendre un type — permettant des switchs exhaustifs.
Comparaison de Code
✕ 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 {}
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Hiérarchie contrôlée
Seuls les sous-types autorisés peuvent étendre — sans sous-classes surprises.
Correspondance exhaustive
Le compilateur vérifie que le switch couvre tous les cas, sans default nécessaire.
Types de données algébriques
Modélisez naturellement les types somme — sealed + records = ADTs en Java.
Ancienne Approche
Hiérarchie ouverte
Approche Moderne
sealed permits
Depuis JDK
17
Difficulté
Intermédiaire
Support JDK
Classes sealed pour les hiérarchies de types
Disponible
Disponible depuis JDK 17 LTS (sept. 2021)
Comment ça fonctionne
Les classes sealed définissent un ensemble fermé de sous-types. Le compilateur connaît tous les cas possibles, ce qui permet le pattern matching exhaustif sans branche default. Combinées avec les records, elles modélisent des types de données algébriques.
Documentation Associée