在Java中,从内部(类)对象访问"外部对象"?

Jon*_*s N 1 java reflection

当然有这种方式:OuterClass.this.但那非常笨拙.理想情况下,有一个关键字outer就像super.

有没有办法反思性地做到这一点?(我没有找到任何方法,隐藏的outer引用似乎没有出现在结果中Class#getFields().)

也许在Java7中有一种方法?

编辑.考虑一下我刚发现的类似问题:

是否有一种语法可以从另一个匿名内部类中获取对匿名内部类的引用?

小智 9

唯一的方法是使用OuterClass.this引用包含类.

这不是问题,如果您需要多次引用包含的类实例,只需将其分配给局部变量,而不必多次处理此语法.final OuterClass oc = OuterClass.this;然后你只需oc在本地使用你需要做的事情.

拥有另一个关键字outer只会混淆正在发生的事情.语法OuterClass.this 明确定义了正在发生的事情,泛型关键字将隐藏包含类的标识,特别是如果它嵌套在多个内部类中.outer.this.outer.this.outer.this太可怕了!

这不是任何想象力的负担.特别是现代IDE.