হ্যাঁ, আমরা মেথড লোকাল ইনার ক্লাস ব্যবহার করে লোকাল final ভেরিয়েবল অ্যাক্সেস করতে পারি কারণ final ভেরিয়েবলগুলো হিপে সংরক্ষিত থাকে এবং মেথড লোকাল ইনার ক্লাস অবজেক্ট যতক্ষণ জീവিত থাকে ততক্ষণ সেগুলো থাকে।
মেথড লোকাল ইনার ক্লাস
- একটি লোকাল ইনার ক্লাস ইনস্ট্যান্স আর্গুমেন্ট হিসেবে পাস করা যেতে পারে এবং মেথড থেকে রিটার্ন করা যেতে পারে এবং একটি বৈধ স্কোপের ভিতরে উপলব্ধ থাকে।
- মেথড লোকাল ইনার ক্লাস-এর একমাত্র সীমাবদ্ধতা হল একটি লোকাল প্যারামিটার তখন এক্সিকিউট হতে পারে যখন এটি final হিসেবে ডিফাইন করা থাকে।
- লোকাল প্যারামিটার এক্সিকিউট করার মেথডটি কল করা যেতে পারে মেথড এক্সিকিউশন শেষ হওয়ার পর, যার মধ্যে লোকাল ইনার ক্লাস ডিক্লেয়ার করা হয়েছিল। ফলে, লোকাল প্যারামিটারগুলো আর তাদের মান ধরে রাখে না।
- লোকাল ইনার ক্লাস অবজেক্ট তৈরি করার আগে মানগুলো ফিক্সড হতে হবে। যদি প্রয়োজন হয়, একটি non-final ভেরিয়েবলকে একটি final ভেরিয়েবলে কপি করা যেতে পারে যা পরেও লোকাল ইনার ক্লাস দ্বারা এক্সিকিউট করা হবে।
উদাহরণ
class MainClassTest {
private int x = 10;
public void sampleMethod() {
final int y = 20;
class MethodLocalInnerClassTest {
public void accessMainClassVar() {
System.out.println(x); // final ভেরিয়েবল অ্যাক্সেস
System.out.println(c);
}
}
MainClassTest mainTest = new MethodLocalInnerClassTest();
mainTest.accessMainClassVar();
}
}
// Test.java
public class Test {
public static void main(String args[]) {
MainClassTest test = new MainClassTest();
test.sampleMethod();
}
}
আউটপুট
10 20