PDA

View Full Version : دسترسی به local variable در local class



blaster-777
دوشنبه 03 شهریور 1393, 19:43 عصر
سلام به دوستان
تو برنامه زیر داخل متد 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();
}
}

dele514
دوشنبه 03 شهریور 1393, 21:35 عصر
اینکه وقتی this میذارید ارور میده دلیلش اینکه this برای دسترسی به متغیر های نمونه ی کلاسی که درونش تعریف شده هست.اما در اینجا در کلاس inTest متغیری تعریف نشده.
اما اینکه چطوری به متغیر x متد testOne دسترسی داشته باشیم رو نمیدونم.

cups_of_java
سه شنبه 04 شهریور 1393, 00:34 صبح
چون x توی کلاس Test تعریف نشده خوب نمیتونید با this ازش استفاده کنید.
و x یک متغیر محلی تابع شامل کلاس درونیتون هست و این جور متغیر ها رو وقتی که final باشن میشه بهشون دسترسی داشت فقط.

ahmad.mo74
سه شنبه 04 شهریور 1393, 12:10 عصر
در حال حاضر راهی وجود نداره برای اینکه جفتشون همنام باشن و بهشون دسترسی داشت، تنها راهش همونه که اسمشون متفاوت باشه.