java中对比两个对象哪些字段不同(反射获取对象的字段和value值)
场景:当需要对比两个对象的哪些字段的value值不同时,使用
原理: 通过反射来获取对象中每个字段的value值,进行对比
1.获取需要比对对象的Class对象
比对的是obpPurQualityCheckTaskItem和obpPurQualityTaskItemExportDto对象,但因为他们是两个不同的类,所以都需要获取
2.获取需要比对的对象中的字段
注:getDeclaredField(参数)是获取对象的指定的参数的字段,
getDeclaredFields是获取对象的所有字段
(1) 获取对象中的所有字段
(2)获取某些指定的字段
1.先定义一个字符串数组,该数组中包括了需要对比的字段名
2.定义类型为Field的集合,用于字段的存储
3.循环filedNames数组,使用class的getDeclaredField方法获取对应类的字段名
3.获取存储字段的集合的下标值,比对字段值
通过下标获取到fields 和 fieldExports的字段的field类,使用Field的get方法获取到字段值
其中,
value1,value2为对应的字段值
下述代码是为了获取到实体类的Schema的注解中的description参数的值,该值一般为描述字段的中文意思
总结:
1.先获取到比对对象的类
2.确定需要比对的字段,(1)全部都比对(2)固定字段比对
3.循环field集合,使用field的get方法,分别传入比对的对象作为参数,获取对应的字段的值,进行比较
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现