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方法,分别传入比对的对象作为参数,获取对应的字段的值,进行比较

 

 

 

 

  

posted @   呼呼大睡猪小弟  阅读(259)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示