Czy istnieje biblioteka narzędzi Java, która jest analogiczna do programu różnicowego w systemie Unix, ale dla obiektów? Szukam czegoś, co może porównać dwa obiekty tego samego typu i wygenerować strukturę danych, która reprezentuje różnice między nimi (i może rekurencyjnie porównywać różnice w zmiennych instancji). Ja nie szukam implementacji Java diff tekstowym. Ja również nie szuka pomocy, jak korzystać z refleksji, aby to zrobić.
Aplikacja, którą utrzymuję, ma delikatną implementację tej funkcji, która miała słabe wybory projektowe i którą trzeba przepisać, ale byłoby jeszcze lepiej, gdybyśmy mogli użyć czegoś z półki.
Oto przykład tego, czego szukam:
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
Po porównaniu narzędzie powiedziałoby mi, że „prop1” różni się między dwoma obiektami, a „prop2” jest tym samym. Myślę, że to najbardziej naturalne, że DiffDataStructure jest drzewem, ale nie będę wybredny, jeśli kod jest niezawodny.