是否可以从“list-child”访问“list-owner”?

时间:2012-11-13 17:24:55

标签: java list java-ee arraylist

我的objectA ClassA来自List的{​​{1}}个对象。

我可以从ClassB访问objectA吗?我的意思是,我问的是objectB之类的内容是否会返回objectB.getListOwner()

我知道我可以在objectA上拥有ClassA属性,并在创建ClassB时将其设置为objectA,但我想知道是否有更直接的内容。

2 个答案:

答案 0 :(得分: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()

关于这种方法的小评论。这引入了直接循环依赖性,从设计原则的观点来看,由于该问题范围之外的各种原因,这通常是不合需要的。但它实现了你想要的。

答案 1 :(得分: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,你必须自己为它创建结构。