2012-11-13 35 views
1

我有一個objectAClassA它有一個List對象從ClassB是否可以從「list-child」訪問「列表所有者」?

我可以從objectB訪問objectA嗎?我的意思是,我在問是否有像objectB.getListOwner()那樣的返回objectA

我知道我可以有一個ClassBClassA屬性附加傷害,並objectA設置它,當我創建objectB但如果有一些更直接的我不知道。

回答

1

不直接或自動。

你可以做的是有一個方法ClassA的如addToList(ClassB objectB) 和這樣做是如下:

public void addToList(ClassB objectB) 
{ 
    objectB.setClassAOwner(this); 
    list.add(objectB); 
} 

而且你使用的方法ClassB對象添加到的ClassA列表。

顯然ClassB需要有一個方法setClassAOwner(ClassA owner)和相應的成員變量ClassA所有者,並極有可能匹配的getter方法getClassAOwner()

至於這種做法小評。這引入了一個直接的循環依賴性,從設計原則的角度來看,這通常是不可取的,因爲這個問題範圍之外的各種原因。但它實現了你想要的。

0

如果您的意思是:我可以問一個列表條目列表來自哪個列表?答案是否定的,你不能,沒有任何東西可以提供。該對象不知道它在哪個列表上(它可能在多個列表中,或者根本沒有)。

例如:

List list1 = new ArrayList(); 

list1.add(new Object()); 
list1.add(new Object()); 
list1.add(new Object()); 

for (Object o : list1) { 
    doSomething(o); 
} 

有沒有辦法讓doSomething弄清楚,傳遞給它的對象從list1來了,你必須創建結構爲你自己。

相關問題