我有以下代码。我想要获得使用其创建内部类对象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 :-(");
}
}
}
编辑:嗯,有些你们的建议修改内部类的加入方法:
public OuterClass outer() {
return OuterClass.this;
}
但是,如果我没有控制修改内部类的东西,然后(只是为了确认)我们是否有其他方法从内部类对象中获取相应的外部类对象?
谢谢乔恩!但是如果我没有控制权来修改内部类(如何检查我的编辑)呢? – peakit 2009-11-29 19:22:51
@peakit:据我所知,除非你使用反射,否则你运气不好。它觉得它实际上是封装的违反 - 如果内部类不想告诉你它的外部实例是什么,那么你应该尊重它并尝试设计,以至于你不需要它。 – 2009-11-29 19:29:08
这在Java 8中仍然有效吗? – misty 2016-09-28 16:45:43