在Java中分配对象
我有这样的代码:在Java中分配对象,java,object,Java,Object,我有这样的代码: this.elements = elements; 其中元素是一个列表。列表是复制的还是指针复制的,两者都表示相同的列表?这是另一个引用,两者都表示相同的列表。在java中,指针的概念对程序员来说是隐藏的。只有JVM处理指针。两者都表示相同的列表,Java中的所有对象都是引用,因此通过引用修改对象。这两者都是。元素和元素只是同一列表的标识符,不会像其他人所说的那样被复制,它将只复制引用。如果要复制实际列表,必须调用clone()方法: this.elements = elem
this.elements = elements;
其中
元素
是一个列表
。列表是复制的还是指针复制的,两者都表示相同的列表?这是另一个引用,两者都表示相同的列表。在java中,指针的概念对程序员来说是隐藏的。只有JVM处理指针。两者都表示相同的列表,Java中的所有对象都是引用,因此通过引用修改对象。这两者都是。元素和元素只是同一列表的标识符,不会像其他人所说的那样被复制,它将只复制引用。如果要复制实际列表,必须调用clone()
方法:
this.elements = elements.clone();
注意:这是否具有预期的效果仍然取决于列表中的对象是什么,因为它们本身可能是对可变对象的引用。它本质上是一个“指针副本”。Java中正确的术语是引用,而不是指针。一个基本区别是Java引用的值不是内存地址,而是直接指向JVM堆中的对象
如果你想要一份副本,你有几个选择,但可以说最好的是:
this.elements = ImmutableList.copyOf(elements);
此技术用于创建无法更改的列表。如果需要可以修改的列表,请改为:
this.elements = Lists.newArrayList(elements);
还有“内置的”clone()
方法,但是