类的属性值的复制

什么意思呢?先说明一下场景吧!项目中有一个类(Vehicle,其中大概有50多个属性),另外还有若干API,暂且叫做:api100, api200, api300吧。其中api100和api200用于查询Vehicle,分别查询出一部分属性值,两部分拼装在一起才能形成一个完整的Vehicle,即:api100=>Vehicle, api200=>Vehicle,需要将两个不完整的Vehicle组成一个完整的Vehicle传给api300来继续下一个请求。
Spring和Apache beanutil都提供了copyProperty方法,但是都不能满足需求,因为第一个Vehicle对象的值为null的属性会覆盖第二个对象,算了,还是自己来写吧,反正前两个用的也是反射实现的。那就自己用反射吧!

 /** 
  * 用source中的属性值不为null的属性值填充target 
  * @param source 要复制的对象 
  * @param target 要复制的对象 
  */
  public static <T> void mergeProperties(T source, T target){    
      try {        
            Field[] fields = source.getClass().getDeclaredFields();        
            for(Field field : fields){            
                  field.setAccessible(true);            
                  Object value = field.get(source);            
                  if (value != null){                
                        field.set(target, value);            
                  }        
             }    
       } catch (IllegalAccessException e) {        
            e.printStackTrace();    
       }
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,258评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,222评论 6 342
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,549评论 11 349
  • 当自己不忙时,不值钱时,没有一技之长时,首先要做的是学习成长,不断的投资自己学习成长,让自己先变得值钱起来,自...
    刘虎虎222婚礼纪实阅读 1,337评论 0 0
  • 慕容回答了关于微信公众号,还有朋友们问慕容的一些问题,针对一些问的比较多的问题做了回答。 回答如下: 做个认真努力...
    慕容匪我阅读 2,675评论 0 4

友情链接更多精彩内容