Java从数组中获取元素,编辑它,然后将其存储在另一个数组中,而不更改第一个数组

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()方法必须返回与原始对象分离但具有相同属性的对象.