2

私はJavaWebアプリを持っています。これは、従業員のレコードを取得して、奇妙なことに「EmployeeRecordDataHolder」と呼ばれる自家製のデータホルダーオブジェクトに格納します。

更新プロセスの開始時にEmployeeRecordDataHolderのコピーを作成して、データがどのように変更されたかをレポートするための比較を実行できるようにします。

メンバーデータへの元のデータとコピー共有の参照でいくつかの問題が発生しました。その結果、元のデータが更新されないままになりませんでした。

私はもともと、HashMapを介してデータベースからデータを取得します。HashMap get()から元のオブジェクトとコピーの両方にデータを入力した場合、2つのオブジェクトは引き続きデータへの同じ参照を共有するため、1つのオブジェクトのデータを変更すると、コピーのデータも変更されるという状況になりますか?

HashMapを使用して元のオブジェクトにデータを入力し、コピーのすべてのセッターの元のすべてのゲッターを呼び出してコピーを作成した場合はどうなりますか?例:

copyDataHolderObj.setSomePieceOfData(  originalDataHolderObj.getSomePieceOfData() );

このメソッドは、互いに独立して変更できる2つのオブジェクトになりますか?

よろしくお願いします

スティーブ

4

1 に答える 1

1

最初の質問への回答:

はい、両方が同じオブジェクトへの参照を共有します。HashMap参照を格納するため、行われる更新はすべて元のオブジェクトに対して行われます。このページでは、変更が反映されていることを明確に説明しています。

2番目の質問への回答:

あなたはそのようにそれを行うことができます。すべてのオブジェクトのコピーを作成します。

于 2012-05-24T14:56:09.630 に答える