ইনার ক্লাসগুলোতে স্ট্যাটিক মেম্বার (Static members in inner classes)
স্ট্যাটিক নেস্টেড ক্লাসের প্রয়োজন ছাড়াই ইনার ক্লাসগুলোতে স্ট্যাটিক মেম্বার ডিফাইন করুন।
কোড তুলনা
✕ 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();
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
আরও ফ্লেক্সিবিলিটি
ইনার ক্লাসগুলোতে এখন প্রয়োজনে স্ট্যাটিক মেম্বার থাকতে পারে।
শেয়ারড স্টেট (Shared State)
একটি ইনার ক্লাসের ইনস্ট্যান্স জুড়ে শেয়ারড স্টেট ট্র্যাক করুন।
ডিজাইন ফ্রিডম (Design Freedom)
শুধু একটি স্ট্যাটিক ফিল্ডের জন্য স্ট্যাটিক নেস্টেড ক্লাসে প্রমোট করার প্রয়োজন নেই।
পুরনো পদ্ধতি
স্ট্যাটিক নেস্টেড ক্লাস ব্যবহার করতে হবে
আধুনিক পদ্ধতি
ইনার ক্লাসগুলোতে স্ট্যাটিক মেম্বার
JDK থেকে
16
কঠিনতা
মধ্যম
JDK সমর্থন
ইনার ক্লাসগুলোতে স্ট্যাটিক মেম্বার (Static members in inner classes)
উপলব্ধ
JDK 16 (মার্চ 2021) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
Java 16 এর আগে, শুধুমাত্র স্ট্যাটিক নেস্টেড ক্লাসগুলোই স্ট্যাটিক মেম্বার ধারণ করতে পারত। ইনার (নন-স্ট্যাটিক) ক্লাসগুলোতে স্ট্যাটিক মেম্বার থাকতে পারত না কারণ সেগুলোর জন্য একটি এনক্লোজিং ইনস্ট্যান্সের প্রয়োজন হতো। Java 16 এই সীমাবদ্ধতা শিথিল করেছে, যা ইনার ক্লাসগুলোতে স্ট্যাটিক ফিল্ড, মেথড এবং এমনকি নেস্টেড টাইপগুলোর অনুমতি দেয়।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ