我有一个 Java webapp,它提取员工的记录并将其存储在一个自制的数据持有者对象中,奇怪的是,它被称为“EmployeeRecordDataHolder”。
我想在更新过程开始时制作一份 EmployeeRecordDataHolder 的副本,以便我可以进行比较以报告数据的变化情况。
我遇到了对成员数据的原始和副本共享引用的一些问题,结果是原始数据没有保持未更新。
我最初通过 HashMap 从数据库中取回数据。如果我从 HashMap get() 填充两个对象(原始对象和副本),这两个对象是否仍会共享对数据的相同引用,从而导致更改一个对象中的数据也会更改副本中的数据?
如果我使用 HashMap 填充原始对象,然后通过在副本的所有 setter 中调用原始对象上的所有 getter 来制作副本怎么办?例子:
copyDataHolderObj.setSomePieceOfData( originalDataHolderObj.getSomePieceOfData() );
这种方法会导致两个可以相互独立更改的对象吗?
非常感谢提前
史蒂夫