Cal*_*lin 2 java arrays element
我在我的一个Java项目中遇到了一个问题,导致错误.问题听起来如下:
我有两个数组.我们先将它们命名为Array和secondArray.在这种情况下,对象是由我创建的单独类.它工作,数组可以填充该类型的对象.
Object[] firstArray= new Object[];
Object[] secondArray = new Object[];
Run Code Online (Sandbox Code Playgroud)
现在,当我从第一个数组中获取一个元素,编辑它然后在第二个数组中复制它时,第一个数组中的对象也会被改变.
tempObj = firstArray[3];
tempObj.modifySomething();
secondArray[3] = tempObj;
Run Code Online (Sandbox Code Playgroud)
每当我这样做时,第一个数组的(在这种情况下)第3个元素(实际上是第4个)得到修改.我不想要这个.我希望第一个数组保持不变,未修改,我从第一个数组中提取然后修改的对象应存储在第二个数组中,以便第二个数组实际上是运行某些代码后的第一个数组.
PS即使我使用Array.get(Array,index)从第一个数组中获取元素然后修改它,该元素仍会在第一个数组中被修改.
希望你能理解我想说的话,如果是的话,请借给我一只手:)
谢谢!
Bor*_*lid 10
您将不得不创建一个新对象.
问题是modifySomething电话.当你这样做时,它改变了它被调用的对象.所以如果你只有一个对象(即使是两个名字),你就不能打电话,modifySomething否则他们都会改变.
当你说secondArray[3] = firstArray[3],你没有创建一个新对象:你只是分配一个参考.通过中间临时引用不会改变它.
你需要看起来像这样的代码:
Object tempObj = firstArray[3].clone();
tempObj.modifySomething();
secondArray[3] = tempObj;
Run Code Online (Sandbox Code Playgroud)
该clone()方法必须返回与原始对象分离但具有相同属性的新对象.
| 归档时间: |
|
| 查看次数: |
41655 次 |
| 最近记录: |