我有以下代碼。我想要獲得使用其創建內部類對象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