在内部类中,可以访问外部类的变量,但不能访问方法的局部变量。我理解有关方法的局部变量不可访问的部分,但我想知道为什么外部类变量可以访问?
我的理解是,由于内部类与外部类绑定(bind),因此只要父类可用,子类就可以访问其父类变量。我说得对吗?
最佳答案
假设你的外部类名为Outer
,从内部类的作用域(非静态),Outer.this.foo
即可获取该字段。
例如,
Outer.this.foo=new ArrayList<>();
其中 Outer 是类的名称,foo
标识字段。
您也可以直接使用 foo=new Baz()
获取它,但如果由于阴影而出现命名冲突,它会选择内部字段。
如果是静态内部类,则需要显式实例:
outerInstance.foo=new ArrayList<>();
或者如果要访问的字段是静态的,则像平常一样访问它:
Outer.staticFoo=new ArrayList<>();
关于java - 在内部类中访问外部类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17578820/