Existe-t-il une bibliothèque utilitaire Java qui soit analogue au programme Unix diff, mais pour les objets ? Je cherche quelque chose qui puisse comparer deux objets du même type et générer une structure de données qui représente les différences entre eux (et qui puisse comparer récursivement les différences dans les variables d'instance). Je suis no Je cherche une implémentation Java d'un diff texte. Je suis également no Je cherche de l'aide pour savoir comment utiliser la réflexion pour faire cela.
L'application dont je m'occupe a une implémentation fragile de cette fonctionnalité qui a fait l'objet de mauvais choix de conception et qui doit être réécrite, mais ce serait encore mieux si nous pouvions utiliser quelque chose de standard.
Voici un exemple du genre de chose que je recherche :
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
Après comparaison, l'utilitaire me dirait que "prop1" est différent entre les deux objets et que "prop2" est le même. Je pense qu'il est plus naturel pour DiffDataStructure d'être un arbre, mais je ne vais pas faire la fine bouche si le code est fiable.