Language Orta

Tür hiyerarşileri için sealed sınıflar

Hangi sınıfların bir türü genişletebileceğini kısıtlayın — kapsamlı switch'leri etkinleştirin.

✕ 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 {}
Bu kodda bir sorun mu gördünüz? Bize bildirin.
🔐

Kontrollü hiyerarşi

Yalnızca izin verilen alt türler genişletebilir — sürpriz alt sınıf yok.

Kapsamlı eşleştirme

Derleyici switch'in tüm durumları kapsadığını doğrular, default gerekmez.

📐

Cebirsel veri türleri

Sum türlerini doğal olarak modelleyin — sealed + record'lar = Java'da ADT'ler.

Eski Yaklaşım
Açık Hiyerarşi
Modern Yaklaşım
sealed permits
JDK'dan itibaren
17
Zorluk
Orta
Tür hiyerarşileri için sealed sınıflar
Mevcut

JDK 17 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2021)

Sealed sınıflar, kapalı bir alt tür kümesi tanımlar. Derleyici tüm olası durumları bilir ve varsayılan bir dal olmadan kapsamlı kalıp eşleştirmeyi etkinleştirir. Record'larla birleştirildiğinde cebirsel veri türlerini modeller.

Paylaş 𝕏 🦋 in