gpt4 book ai didi

java - 复制具有对成员数据的共享引用的对象

转载 作者:行者123 更新时间:2023-11-30 11:44:34 26 4
gpt4 key购买 nike

我有一个 Java 网络应用程序,它提取员工的记录并将其存储在一个自制的数据持有者对象中,这个对象奇怪地称为“EmployeeRecordDataHolder”。

我想在更新过程开始时制作 EmployeeRecordDataHolder 的副本,以便我可以进行比较以报告数据如何更改。

我在对成员数据的原始和副本共享引用方面遇到了一些问题,结果是原始数据没有保持未更新状态。

我最初通过 HashMap 从数据库取回数据。如果我从 HashMap get() 填充了两个对象(原始对象和副本),这两个对象是否仍会共享对数据的相同引用,从而导致更改一个对象中的数据也会更改副本中的数据?

如果我使用 HashMap 填充原始对象,然后通过在副本的所有 setter 中调用原始对象的所有 getter 来制作副本,会怎样?示例:

copyDataHolderObj.setSomePieceOfData(  originalDataHolderObj.getSomePieceOfData() );

此方法会导致两个对象可以相互独立地更改吗?

提前致谢

史蒂夫

最佳答案

第一个问题的答案:

是的,两者将共享对同一对象的引用。 HashMap 存储引用,因此所做的任何更新都是在原始对象上完成的。 This页面清楚地说明更改已反射(reflect)。

第二个问题的答案:

你可以这样做。创建所有对象的副本。

关于java - 复制具有对成员数据的共享引用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10739394/

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