2个对象与Java反射之间的差异:如何?
对于审计日志,我需要知道两个对象之间的差异。
那些objets可能包含其他objets,列表,对象集合等,如果需要,所需的差异可能会递归。
是否有一个使用反射(或其他)的API已经?
提前致谢。
问候
试图一般地解决这个问题是一个相当艰巨的问题。 您可以考虑将访问者模式配对,该模式允许您使用责任链模式向对象图添加功能,该模式允许您将执行任务的责任分离为多个对象,然后将请求动态路由到正确的处理器
如果你这样做了,你将能够在每个类型的基础上生成简单,具体的分化逻辑,而不需要一个单一的大型课程来处理你所有的差异化任务。 在树上添加处理程序也很容易。
最好的部分是,你仍然可以在责任链中为“扁平”对象(不是集合的对象,基本上只有对象)提供一个链接,这也是反射最能帮助你的地方。 如果您的“全部”案例使用简单的基于反思的比较,而您的“特殊”案例处理列表,词典和集合等事情,那么您将拥有灵活,可维护,便宜的解决方案。
欲了解更多信息:
我已经编写了一个完全符合你要求的框架。 它可以从任何类型的对象生成一个图形,无论它的嵌套深度如何,并允许您通过访问者遍历所做的更改。 我已经完成了更改日志生成,自动合并和更改可视化等操作,迄今为止它还没有让我失望。
我想我已经晚了几年没有在你的具体情况下提供帮助,但为了完成的目的,这里是项目的链接:https://github.com/SQiShER/java-object-diff
链接地址: http://www.djcxy.com/p/45305.html上一篇: Differences between 2 objects with Java reflection : how?
下一篇: Is there a standard practice for synchronizing SQL Server tables?