是否有一个类似于 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”是相同的。我认为对于迪夫数据结构来说,成为一棵树是最自然的,但是如果代码是可靠的,我就不挑剔了。