الأعضاء الثابتة في الفئات الداخلية
عرّف الأعضاء الثابتة في الفئات الداخلية دون الحاجة للفئات المتداخلة الثابتة.
مقارنة الكود
✕ Java 8
class Library {
// Must be static nested class
static class Book {
static int globalBookCount;
Book() {
globalBookCount++;
}
}
}
// Usage
var book = new Library.Book();
✓ Java 16+
class Library {
// Can be inner class with statics
class Book {
static int globalBookCount;
Book() {
Book.globalBookCount++;
}
}
}
// Usage
var lib = new Library();
var book = lib.new Book();
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
مرونة أكبر
يمكن للفئات الداخلية الآن امتلاك أعضاء ثابتة عند الحاجة.
حالة مشتركة
تتبّع الحالة المشتركة عبر مثيلات الفئة الداخلية.
حرية التصميم
لا حاجة لترقية إلى فئة متداخلة ثابتة لمجرد حقل ثابت واحد.
الأسلوب القديم
يجب استخدام فئة متداخلة ثابتة
الأسلوب الحديث
أعضاء ثابتة في الفئات الداخلية
منذ JDK
16
الصعوبة
متوسط
دعم JDK
الأعضاء الثابتة في الفئات الداخلية
متاح
متاح على نطاق واسع منذ JDK 16 (مارس 2021)
كيف يعمل
قبل Java 16، يمكن فقط للفئات المتداخلة الثابتة احتواء الأعضاء الثابتة. لم تستطع الفئات الداخلية (غير الثابتة) امتلاك ثوابت لأنها تتطلب مثيلاً مُحيطاً. يُرخّي Java 16 هذا القيد مسمحاً بالحقول والدوال والأنواع المتداخلة الثابتة في الفئات الداخلية.
توثيق ذو صلة