دسترسی به local variable در local class
سلام به دوستان
تو برنامه زیر داخل متد testOne یه local class نوشتم به نام inTest که در داخل اون یه متد دیگه به نام inTestOne پیاده سازی شده . :افسرده:
همون طور که میبینید متغییر x داخل متد shadow شده . من میخوام از داخل متد inTestOne به متغییر x مربوط به متد testOne دسترسی داشته باشم .
اما وفتی با this این کارو میکنم ارور میگیره (خط 8th که کامنت شده) . چطوری میتونم این کارو کنم؟ :قلب:
public class Test {
int testOne(){ //member method
int x=5;
class inTest // local class in member method
{
void inTestOne(int x){
System.out.print("x is "+x);
// System.out.print("this.x is "+this.x);
}
}
inTest ins=new inTest(); // create an instance of inTest local class (inner class)
ins.inTestOne(10);
return 0;
}
public static void main(String[] args) {
Test obj = new Test();
obj.testOne();
}
}
نقل قول: دسترسی به local variable در local class
اینکه وقتی this میذارید ارور میده دلیلش اینکه this برای دسترسی به متغیر های نمونه ی کلاسی که درونش تعریف شده هست.اما در اینجا در کلاس inTest متغیری تعریف نشده.
اما اینکه چطوری به متغیر x متد testOne دسترسی داشته باشیم رو نمیدونم.
نقل قول: دسترسی به local variable در local class
چون x توی کلاس Test تعریف نشده خوب نمیتونید با this ازش استفاده کنید.
و x یک متغیر محلی تابع شامل کلاس درونیتون هست و این جور متغیر ها رو وقتی که final باشن میشه بهشون دسترسی داشت فقط.
نقل قول: دسترسی به local variable در local class
در حال حاضر راهی وجود نداره برای اینکه جفتشون همنام باشن و بهشون دسترسی داشت، تنها راهش همونه که اسمشون متفاوت باشه.