gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:15:46 24 4
gpt4 key购买 nike

我在我的一个 Java 项目中遇到了一个问题,该问题导致了错误。问题听起来如下:

我有两个数组。我们将它们命名为firstArray 和secondArray。在这种情况下,对象是我创建的一个单独的类。它有效,数组可以填充该类型的对象。

Object[] firstArray= new Object[];
Object[] secondArray = new Object[];

现在,当我从第一个数组中获取一个元素,对其进行编辑然后将其复制到第二个数组中时,第一个数组中的对象也会发生更改。

tempObj = firstArray[3];
tempObj.modifySomething();
secondArray[3] = tempObj;

每当我这样做时,第一个数组的(在本例中)第三个元素(实际上是第四个)都会得到修改。我不想要这个。我希望第一个数组保持完整、未修改,并且我从第一个数组中提取然后修改的对象应存储在第二个数组中,以便第二个数组实际上是运行某些代码后的第一个数组。

附注即使我使用 Array.get(Array, index) 从第一个数组中获取元素然后修改它,该元素仍然会在第一个数组中被修改。

希望您明白我想说的话,如果是的话,请帮我一下:)

谢谢!

最佳答案

您将必须创建一个新对象。

问题出在 modifySomething 调用上。当您这样做时,它会改变调用它的对象。因此,如果您只有一个对象(即使有两个名称),则无法调用 modifySomething,否则它们都会发生变化。

当您说 secondArray[3] = firstArray[3] 时,您并没有创建一个新对象:您只是分配了一个引用。通过中间临时引用不会改变这一点。

您需要如下所示的代码:

Object tempObj = firstArray[3].clone();
tempObj.modifySomething();
secondArray[3] = tempObj;

clone() 方法必须返回一个与原始对象分离但具有相同属性的对象。

关于Java从数组中获取一个元素,对其进行编辑,然后将其存储在另一个数组中,而不改变第一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11167678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com