0

私は最近、同じJavaクラスの2つのインスタンスを比較する方法について同僚と議論しました。

複雑なオブジェクトの2つのインスタンスがあり、これら2つの間でどの属性が異なるかを知りたいとします。

ユースケースは次のとおりです。多くのフィールドを持つユーザープロファイルがあり、ユーザーが新しいプロファイルを送信した場合、「誕生日、名前、通りの名前を正常に変更しました。」などを表示できるように、どのフィールドが変更されたかを知りたいとします。 。」

したがって、現時点での最善の解決策は、別のオブジェクトを取得するクラスにcompareメソッドを記述し、すべてのフィールドを1つずつ比較してから、異なるフィールドのリストを返すことです。

各属性を手動で指定せずにそれを行うための自動メソッド(たとえば、外部ライブラリから)があるかどうか疑問に思いました。

ところで、hibernateにローカルオブジェクトとデータベースオブジェクトを比較するためにこれを実行できるメソッドがある場合、それはトリックを実行できます。

4

1 に答える 1

2

Guillaume Poletが指摘しているように、反射を使用します。また、このように公開する必要のあるフィールドに注釈を付けます。パブリックフィールドのアイデアが気に入らない場合は、アノテーション付きのgetX()メソッドを使用してください。比較を行うためのライブラリコードを知りません。しかし、書くのにそれほど時間はかかりません。

于 2012-04-24T10:11:09.013 に答える