3

我是java新手,我对下面的例子感到困惑

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();
}
}

为什么我无法在第 8 行使用“this”关键字访问 inTestOne() 方法中的阴影变量

4

2 回答 2

6

为什么我无法在第 8 行使用“this”关键字访问 inTestOne() 方法中的阴影变量

因为x不是类成员变量;它是一个局部变量。关键字this可用于访问类的成员字段,而不是局部变量。

一旦变量被隐藏,您将无法访问它。这没关系,因为变量和本地内部类都是你自己去改变的;如果您想访问被遮蔽的变量,您需要做的就是重命名它(或重命名遮蔽它的变量,只要对您更有意义)。

注意:不要忘记标记局部变量final,否则即使没有阴影,您也无法访问它。

于 2014-08-25T16:15:12.207 回答
2

this.用于访问成员- 局部变量不是成员,因此当它被遮蔽时不能以这种方式访问​​。

于 2014-08-25T16:15:26.907 回答