Language متوسط

عرّف الأعضاء الثابتة في الفئات الداخلية دون الحاجة للفئات المتداخلة الثابتة.

✕ 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 16 (مارس 2021)

قبل Java 16، يمكن فقط للفئات المتداخلة الثابتة احتواء الأعضاء الثابتة. لم تستطع الفئات الداخلية (غير الثابتة) امتلاك ثوابت لأنها تتطلب مثيلاً مُحيطاً. يُرخّي Java 16 هذا القيد مسمحاً بالحقول والدوال والأنواع المتداخلة الثابتة في الفئات الداخلية.

مشاركة 𝕏 🦋 in