访问内部类中的外部类变量

时间:2013-07-10 19:00:52

标签: java inner-classes

在内部类中,可以访问外部类的变量,但不能访问方法的局部变量。我理解一个关于方法的局部变量不可访问的部分,但我想知道为什么外部类变量是可访问的?

我的理解是,当内部类与外部类绑定时,只要父类可用,子进程就可以访问其父变量。我是对的吗?

2 个答案:

答案 0 :(得分:41)

假设您的外部类被调用Outer,从内部类的范围(非静态),Outer.this.foo来到该字段。

例如,

Outer.this.foo=new ArrayList<>();

其中Outer是类的名称,foo标识字段。

您也可以直接以foo=new Baz()抓取它,但如果由于阴影导致命名冲突,它会选择内部字段。

如果它是静态内部类,则需要一个显式实例:

outerInstance.foo=new ArrayList<>();

或者如果要访问的字段是静态的,请像往常一样访问它:

Outer.staticFoo=new ArrayList<>();

答案 1 :(得分:0)

答案:由于词汇范围,可以访问java中的外部类变量。

什么是词汇范围?

根据编写代码的顺序定义范围。让我们说你的班级结构如下

OuterMost  
   --Inner  
     --InnerMost

然后,最内层的类将能够从内部和外部访问变量。