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