الفئات المُغلقة للتسلسلات الهرمية للأنواع
قيّد الفئات التي يمكنها امتداد نوع — مما يُتيح switches شاملة.
مقارنة الكود
✕ 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 {}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
تسلسل هرمي متحكَّم به
فقط الأنواع الفرعية المسموحة يمكنها الامتداد — لا فئات فرعية مفاجئة.
مطابقة شاملة
المترجم يتحقق من أن switch يغطي جميع الحالات، لا حاجة لـ default.
أنواع جبرية
نمذجة أنواع المجموع بشكل طبيعي — مُغلق + records = ADTs في Java.
الأسلوب القديم
تسلسل هرمي مفتوح
الأسلوب الحديث
sealed permits
منذ JDK
17
الصعوبة
متوسط
دعم JDK
الفئات المُغلقة للتسلسلات الهرمية للأنواع
متاح
متاح على نطاق واسع منذ JDK 17 LTS (سبتمبر 2021)
كيف يعمل
الفئات المُغلقة تُعرِّف مجموعةً مغلقةً من الأنواع الفرعية. المترجم يعرف جميع الحالات الممكنة مما يُتيح مطابقة أنماط شاملة دون فرع default. مع Records تُنمذج الأنواع الجبرية.
توثيق ذو صلة