因此,我花了很长时间寻找有关此操作的文档,但失败了。问题更多是“它是如何工作的”,而不是对代码片段的解释。
麻烦:
xObject x = new xObject();
yObject y = new yObject( x );
x.add( y );
其中
xObject
具有:private ArrayList<yObject> yObjects;
public void add( yObject _y ) {
this.yObjects.add( _y );
}
并且
yObject
具有:private xObject x;
public yObject( xObject _x ) {
this.x = _x;
}
现在可以在x内的ArrayList中玩
y
吗?尝试通过测试找出问题是不可能的,因为每当我尝试时,我似乎都没有必要的脑力以免感到困惑(原因是我希望这里的聪明人比我更能帮上忙)。
最佳答案
ArrayList<yObject>
不包含yObject:它包含对yObject的引用。实际包含您的任何对象的唯一东西是堆。
这与将朋友的姓名放入手机的“联系人”列表中一样,她可以将您的姓名放入手机的联系人列表中也没有什么不同。没有矛盾之处,因为您的联系人列表中没有一个包含实际人员:该列表仅包含有关如何获得人员的信息。同样,Java变量和Java容器实际上并不包含对象:它们仅包含查找这些对象并与之交互所需的信息。