我有很多存儲在ContainingClass
類型的對象中的ContainedClass
類型的對象。我需要從內部對象訪問容器對象。到目前爲止,我通過在其他對象(如ContainedClass cclass = new ContainedClass(this);
)的構造函數中傳遞容器對象的引用並將其存儲爲ContainingClass owner
來完成此操作。在Java中使用大型內部類是不好的?
這對我來說似乎很難看,似乎適合我的解決方案是使用內部類,但ContainedClass的定義非常大,而且看起來不合適。那麼我應該選擇哪個選項?還是有另一個顯而易見的選擇,我錯過了?
這是我在網上找到的一段示例代碼,描述了我將要使用內部類的內容。
public class TestIt {
public static void main(String a[]){
new TestIt().doit();
/*
output :
Hello world!
*/
}
public void doit() {
new InnerClass().sayHello();
}
public void enclosingClassMethod(){
System.out.println("Hello world!");
}
class InnerClass {
public void sayHello() {
TestIt.this.enclosingClassMethod();
}
}
}
我要補充的是內部類的其他利益,我看是ContainedClass
只能在ContainerClass
存在,這是一個理想的結果。
注意的*內部類*和*靜態內部類*之間的差異。雖然兩者都駐留在外部類的命名範圍內,但非靜態內部類類型的對象會攜帶對外部類類型的對象的隱式引用。 – 2010-09-21 22:57:14
由於您使用的示例代碼不是您正在使用的代碼,因此我們正在討論* code *的代碼行數?包含的類有多少個,包含的有多少個? – 2010-09-21 23:04:54