Esiste una libreria di utilità Java che è analoga al diff del programma Unix, ma per gli oggetti? Sto cercando qualcosa che possa confrontare due oggetti dello stesso tipo e generare una struttura dati che rappresenti le differenze tra loro (e possa confrontare ricorsivamente le differenze nelle variabili di istanza). Sto Non alla ricerca di un'implementazione Java di un diff testo. Inoltre, non sto cercando aiuto su come usare la riflessione per farlo.
L'applicazione che sto mantenendo ha una fragile implementazione di questa funzionalità che ha avuto alcune scelte di design scadenti e che deve essere riscritta, ma sarebbe ancora meglio se potessimo usare qualcosa di disponibile.
Ecco un esempio del tipo di cosa che sto cercando:
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
Dopo il confronto, l'utilità mi direbbe che "prop1" è diverso tra i due oggetti e "prop2" è lo stesso. Penso che sia più naturale per DiffDataStructure essere un albero, ma non sarò pignolo se il codice è affidabile.