java - 我想比较两个相似的对象结构并列出差异
问题描述
我有两个复杂的对象。我想比较两个相似的对象结构并列出差异。我在所有论坛中都搜索过没有正确的解决方案。
每个人都在建议反射方法。反射方法对我没有帮助,我试过了。我的对象结构太复杂了。
下面是我的对象结构。列表中包含的对象在其他列表中的顺序可能不同。一个列表可能有该对象,另一个对象可能没有该列表。
结构:
object
-Field
-Field
-Field
List
-Object
-object
-object
-List
-object
-Field
-Field
-object
-Field
-Field
-Field
-Field
-List
-object
-Field
-Field
-object
-Field
-Field
解决方案
反射 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 | 目的
然后可以使用最终列表与从不同对象创建的此类列表进行比较,并且可以在其不同的组织级别上比较它们的结构。
推荐阅读
- javascript - 如何将 JQuery Autocomplet UI 与来自 JSON 文件的数据一起使用?
- scala - slick.jdbc.SetParameter[List[Int]] 的隐含值
- wpf - Itemscontrol Scrollviewer 不处理数据
- javascript - 在 Teams 平台上更新 BotFramework v4 中的活动
- javascript - 按字母数字对对象数组进行排序
- android - 如何知道图像是否为灰度?
- linux - Linux Kernel 5.0.1 中为 x86 架构定义的系统调用 ID 在哪里?
- macos - MacOS 莫哈韦沙漠。Xlib 编译时出错。致命错误:找不到“X11/Xlib.h”文件
- vba - 如何使用组合框填充 MS-Access 子表单中的多个字段?
- json.net - 为什么 Newtonsoft Schema Validator 无法识别 OAS3 可为空的属性?