Language Intermédiaire

Restreignez quelles classes peuvent étendre un type — permettant des switchs exhaustifs.

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

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
Classes sealed pour les hiérarchies de types
Disponible

Disponible depuis JDK 17 LTS (sept. 2021)

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.

Partager 𝕏 🦋 in