有没有一个Java库可以“比较”两个对象?
有没有一个类似于Unix程序diff的Java实用程序库,但是对于对象?我正在寻找可以比较相同类型的两个对象并生成表示它们之间差异的数据结构的东西(并且可以递归地比较实例变量中的差异)。我不是在寻找文本差异的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”在两个对象之间是不同的,而“prop2”是相同的。我认为DiffDataStructure成为一棵树是最自然的,但如果代码可靠,我不会挑剔。