Java:包含原始对象引用的对象内部的对象引用

标签 java object reference linked-list

所以我费了好大劲才找到关于这个的文档,但都失败了。问题更多的是“它是如何工作的”,而不是对一段代码的解释。

问题:

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>不包含 yObjects:它包含对 yObjects 的引用。唯一真正包含您的任何对象的是堆。

这与您可以将 friend 的名字放入手机的“联系人”列表中,而她可以将您的名字放入手机的联系人列表中没有什么不同。这并不矛盾,因为您的任何一个联系人列表都不包含真实的人:这些列表仅包含有关如何联系人的信息。同样,Java 变量和 Java 容器实际上并不包含对象:它们只包含找到那些对象并与之交互所需的信息。

关于Java:包含原始对象引用的对象内部的对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41900540/

相关文章:

java - JAX-RS 仅序列化少数属性

java - 推箱子 Java Performmove 错误

java - 如何增加第二个表

javascript - 如何在 Angular 7 http get api 调用中迭代动态响应

python - 跟踪上次访问 python 对象的最优雅方法是什么?

python - 如何通过ID访问变量?

Java List 创建大小有限的辅助列表

arrays - 为了在 Matlab 中预分配内存,我想初始化我的对象数组。我该怎么做呢?

c++ - 指针和引用 - 简单的 CharArray 操作程序

c# - C#-从类内部调用方法