访问内部类中的外部类变量
在内部类中,可以访问外部类的变量,但不能访问方法的局部变量。 我理解关于方法的局部变量不可访问的部分,但我想知道为什么外部类变量是可访问的?
我的理解是,当一个内部类与外部类绑定时,只要父类可用,子进程就可以访问它的父变量。 我对么?
假设你的外部类被称为Outer
,从内部类的范围(非静态), Outer.this.foo
来到该字段。
例如,
Outer.this.foo=new ArrayList<>();
其中Outer是类的名称, foo
标识字段。
您也可以直接抓取它作为foo=new Baz()
但如果由于阴影导致命名冲突,它将选择内部字段。
如果它是静态内部类,则需要一个显式实例:
outerInstance.foo=new ArrayList<>();
或者如果要访问的字段是静态的,请像往常一样访问它:
Outer.staticFoo=new ArrayList<>();
答案:由于词法范围,可以访问java中的外部类变量。
什么是词汇范围?
范围按照编写代码的顺序定义。 让我们说你的class级结构如下
OuterMost --Inner --InnerMost
然后最内层的类将能够从内部和外部访问变量。