我有一个对象的ArrayList。 我用这样的东西“检索”其中一个对象:
MyObjectClass myObject = myArrayList.get(34);
如果我随后对myObject进行了修改,例如:
myObject.someMember = 97;
它只是对对象的本地COPY或数组列表中的实际对象进行了吗?也就是说,myObject变量是副本还是数组列表中对象的参考?
答案 0 :(得分:2)
在Java中,引用对象的名称始终具有引用语义。容器get
函数以惯用方式返回容器所包含的相同引用。
如果函数想要返回本地副本,或者您想要本地副本,则可以使用new
完成。
MyObjectClass myObject = new MyObjectClass( myArrayList.get(34) );
答案 1 :(得分:1)
它只是对对象或实际对象的本地COPY执行 在数组列表中?也就是说,myObject变量是副本还是 它是对数组列表中对象的引用吗?
是的,它将对ArrayList
中的对象状态进行更改答案 2 :(得分:0)
都不是。 myObject和arraylist中的项都是对存储在别处的对象的引用。
ArrayList不保存对象,只保存对象的引用(就像对象的引用一样)。对象永远不会存储在Java中的其他对象中,尽管有时以这种方式考虑它们也很方便。