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