Unixプログラムのdiffに類似しているがオブジェクト用のJavaユーティリティライブラリはありますか?同じタイプの2つのオブジェクトを比較し、それらの違いを表すデータ構造を生成できる(そして、インスタンス変数の違いを再帰的に比較できる)ものを探しています。私はテキスト差分のJava実装を探していません。私もよいないこれを行うためにリフレクションを使用する方法についてのヘルプを探しています。
私が維持しているアプリケーションには、この機能の壊れやすい実装があり、設計上の選択が不十分で、書き直す必要がありますが、既製のものを使用できればさらに良いでしょう。
これが私が探している種類のものの例です:
SomeClass a = new SomeClass();
SomeClass b = new SomeClass();
a.setProp1("A");
a.setProp2("X");
b.setProp1("B");
b.setProp2("X");
DiffDataStructure diff = OffTheShelfUtility.diff(a, b); // magical recursive comparison happens here
比較した後、ユーティリティは「prop1」が2つのオブジェクト間で異なり、「prop2」が同じであることを教えてくれます。DiffDataStructureがツリーであるのが最も自然だと思いますが、コードが信頼できるものであれば、私は気難しいことはしません。