对于审核日志,我需要知道2个对象之间的差异。
那些objets可能包含其他objets,list,一组对象,因此如果需要,所需的差异可能是递归的。
是否已经使用反射(或其他)的api?
提前致谢。
此致
答案 0 :(得分:2)
尝试解决这个问题是一个非常艰巨的问题。您可以考虑将访问者模式配对,该模式允许您使用责任链模式向对象图添加功能,这样您可以将执行任务的责任分解为多个对象,然后将请求动态路由到正确的处理程序。
如果你这样做,你将能够在每个类型的基础上生成简单,特定的差异化逻辑,而无需一个处理所有差异化任务的单一,庞大的类。将处理程序添加到树中也很容易。
最好的部分是你仍然可以在你的“责任链”中找到“扁平”物体(不是藏品的物品,基本上只有物品)的链接,这也是反射对你最有帮助的地方。如果你“全能”案例使用简单的基于反射的比较,并且你的“特殊”案例处理列表,词典和集合等事情,那么你将拥有一个灵活,可维护,廉价的解决方案。
欲了解更多信息:
答案 1 :(得分:2)
我编写了一个完全符合您要求的框架。它可以从任何类型的对象生成图形,无论它的嵌套程度如何,并允许您通过访问者遍历更改。我已经完成了更改日志生成,自动合并和更改可视化等操作,到目前为止它还没有让我失望。
我想我在你的具体情况下帮助太晚了几年,但为了完成,这里是项目的链接:https://github.com/SQiShER/java-object-diff