使用Java反射的两个对象之间的差异:如何?

使用Java反射的两个对象之间的差异:如何?,java,Java,对于审核日志,我需要知道两个对象之间的差异。 这些对象可能包含其他对象、列表、对象集,因此如果需要,所需的差异可能是递归的 是否已经有了使用反射(或其他)的api 提前谢谢 关于这是一个非常令人生畏的问题,需要尝试并普遍解决。您可以考虑配对访问者模式,它允许您用一个责任链模式添加对象的图形,这允许您将执行任务的责任分成多个对象,然后动态地将请求路由到正确的处理程序。 如果您这样做了,您将能够在每个类型的基础上生成简单、特定的差异化逻辑,而不需要一个单一的、庞大的类来处理所有的差异化任务。向树中添

对于审核日志,我需要知道两个对象之间的差异。

这些对象可能包含其他对象、列表、对象集,因此如果需要,所需的差异可能是递归的

是否已经有了使用反射(或其他)的api

提前谢谢


关于

这是一个非常令人生畏的问题,需要尝试并普遍解决。您可以考虑配对访问者模式,它允许您用一个责任链模式添加对象的图形,这允许您将执行任务的责任分成多个对象,然后动态地将请求路由到正确的处理程序。 如果您这样做了,您将能够在每个类型的基础上生成简单、特定的差异化逻辑,而不需要一个单一的、庞大的类来处理所有的差异化任务。向树中添加处理程序也很容易

最好的部分是,您仍然可以在“平面”对象(不是集合的对象,基本上只有属性)的责任链中有一个链接,这也是反射对您帮助最大的地方。如果您的“包罗万象”案例使用简单的基于反射的比较,并且您的“特殊”案例处理列表、字典和集合等内容,那么您将拥有一个灵活、可维护、廉价的解决方案

有关更多信息:


我已经编写了一个框架,完全符合您的要求。它从任何类型的对象生成一个图形,不管嵌套有多深,并允许您与访问者一起遍历更改。我已经用它做了变更日志生成、自动合并和变更可视化等工作,到目前为止,它还没有让我失望


我想我已经晚了几年,无法为您的具体案例提供帮助,但为了完成,这里有一个项目链接:

另请参见。Commons BeanUtils有一个这样的新提案:但还不清楚什么时候会是最终提案。