我有一个Java web应用程序,该应用程序提取一个员工的记录并将其存储在一个自制的数据持有者对象中,称为“EmployeeRecordDataHolder”。复制一个对象并共享对成员数据的引用
我想在更新过程开始时创建EmployeeRecordDataHolder的副本,以便我可以进行比较以报告数据如何更改。
我遇到了一些原始和副本共享引用成员数据的问题,结果是原始数据没有保持未更新。
我最初通过HashMap从数据库中获取数据。如果我从HashMap get()中填充了两个对象,即原始对象和副本,这两个对象是否仍然共享相同的数据引用,导致更改一个对象中数据的情况也会改变它的副本?
如果我使用HashMap填充原始对象,然后通过调用副本上所有setter中的orignal上的所有getter来创建副本,该怎么办?例如:
copyDataHolderObj.setSomePieceOfData( originalDataHolderObj.getSomePieceOfData());
这种方法会产生两个可以相互独立更改的对象吗?
感谢很多提前
史蒂夫
所以做一些事情:copyDataHolderObj.setSomePieceOfData(originalDataHolderObj.getSomePieceOfData());在所有的数据值上会给我两个对象,我可以独立更新,而不影响其他值? – Steve
是的。假设你正在创建一个新的对象,即'ClassName copyDataHolderObj = new ClassName();'其中ClassName是所需的类。 – mtk