首页 > 解决方案 > 我想比较两个相似的对象结构并列出差异

问题描述

我有两个复杂的对象。我想比较两个相似的对象结构并列出差异。我在所有论坛中都搜索过没有正确的解决方案。

每个人都在建议反射方法。反射方法对我没有帮助,我试过了。我的对象结构太复杂了。

下面是我的对象结构。列表中包含的对象在其他列表中的顺序可能不同。一个列表可能有该对象,另一个对象可能没有该列表。

结构:

object
   -Field
  -Field
  -Field
 List
 -Object
 -object
 -object
   -List
     -object
     -Field
     -Field
-object
     -Field
     -Field
    -Field
    -Field
    -List
     -object
     -Field
     -Field
     -object
-Field
-Field

标签: javadesign-patternsdata-structures

解决方案


反射 API

我仍然建议研究Java Reflection。参见维基百科

例如,如果属性是对象本身,您可以使用反射进行递归调用,从而通过相同的方法输入它。

public void determineObjectStructure (Object o) {

    Field[] fields = o.getClass().getDeclaredFields();
    for (Field field : fields) {
        // Check Type of field

        // If not primitive -> determineObjectStructure()

        // create Representation
        }
    }

然后你可以手动创建一个“复杂对象结构”表示,其中包含例如一个列表:

levelInComplexObject | 目的

然后可以使用最终列表与从不同对象创建的此类列表进行比较,并且可以在其不同的组织级别上比较它们的结构。


推荐阅读