1

我有一个objectAfrom ClassAwhich 有一个来自List的对象ClassB

我可以objectA从访问objectB吗?我的意思是,我在问是否有类似的东西objectB.getListOwner()返回objectA

我知道我可以在创建时设置ClassA属性ClassB并设置它,但我想知道是否有更直接的东西。objectAobjectB

4

2 回答 2

1

不是直接的或自动的。

您可以做的是在 ClassA 中有一个方法,例如,addToList(ClassB objectB) 它的作用如下:

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

然后您使用该方法将ClassB对象添加到ClassA.

显然ClassB需要有一个方法setClassAOwner(ClassA owner)和相应的成员变量ClassAowner,而且很可能需要一个匹配的 getter 方法getClassAOwner()

关于这种方法的小评论。这引入了直接的循环依赖,从设计原则的角度来看,这通常是不受欢迎的,原因超出了这个问题的范围。但它实现了你想要的。

于 2012-11-13T17:29:21.007 回答
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,您必须自己创建结构。

于 2012-11-13T17:26:50.980 回答