我有以下代码。我想获取创建内部类对象的外部类对象inner
。我该怎么做?
public class OuterClass {
public class InnerClass {
private String name = "Peakit";
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
InnerClass inner = outer.new InnerClass();
// How to get the same outer object which created the inner object back?
OuterClass anotherOuter = ?? ;
if(anotherOuter == outer) {
System.out.println("Was able to reach out to the outer object via inner !!");
} else {
System.out.println("No luck :-( ");
}
}
}
EDIT:好吧,有些人建议通过添加一个方法来修改内部类:
public OuterClass outer() {
return OuterClass.this;
}
但是,如果我无法控制修改内部类,那么(只是为了确认)我们是否有其他方法从内部类对象获取相应的外部类对象?
在内部类本身中,您可以使用OuterClass.this
。该表达式允许引用任何词汇上封闭的实例,在 JLS 中描述为合格的this.
I don't think不过,有一种方法可以从内部类的代码外部获取实例。当然,您可以随时介绍自己的财产:
public OuterClass getOuter() {
return OuterClass.this;
}
编辑:通过实验,看起来保存对外部类的引用的字段具有包级访问权限 - 至少对于我正在使用的 JDK 来说是这样。
编辑:使用的名称(this$0
) is实际上在 Java 中有效,尽管JLS不鼓励其使用:
The $
字符只能用于
机械生成的源代码或者,
很少,访问预先存在的名称
遗留系统。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)