美文网首页
类的属性值的复制

类的属性值的复制

作者: jarvan4dev | 来源:发表于2016-03-12 22:43 被阅读58次

什么意思呢?先说明一下场景吧!项目中有一个类(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();    
       }
  }

相关文章

  • 类的属性值的复制

    什么意思呢?先说明一下场景吧!项目中有一个类(Vehicle,其中大概有50多个属性),另外还有若干API,暂且叫...

  • 原型模式-Swift

    Prototype 原型模式是通过现有对象的所有属性来复制自身,创建一个新的对象。当类的实例间差异仅是属性值的不同...

  • relative相关属性

    第一类:属性值为true或false 第二类:属性值必须为id的引用名“@id/id-name” 第三类:属性值为...

  • RelativeLayout常用属性

    第一类:属性值为true或false 第二类:属性值必须为id的引用名“@id/id-name” 第三类:属性值为...

  • CAReplicatorLayer

    类说明 复制多个自己的子图层,并且复制体会保持被复制图层的各种基础属性以及动画 属性说明 // 赋值子图层个数(...

  • css学习笔记

    一、基础选择器 标签选择器:标签名 { css属性名:属性值; } 类选择器:.类名 { css属性名:属性值; ...

  • OC控制器之间的传值

    1.正向传值 属性传值在B类中定义属性用于接收A类传来的数据 2.反向传值(回调) 1)利用对象反向传值 将A类对...

  • Objective-C学习笔记之传值

    Objective-C的传值 一、属性传值 顾名思义,属性传值就是通过类的属性传值,也是objective–c中最...

  • Android layout属性大全

    第一类:属性值 true或者 false 第二类:属性值必须为id的引用名“@id/id-name” 第三类:属性...

  • AS中android layout 属性说明探索优化中

    第一类:属性值 true或者 false 第二类:属性值必须为id的引用名“@id/id-name” 第三类:属性...

网友评论

      本文标题:类的属性值的复制

      本文链接:https://www.haomeiwen.com/subject/vlwxlttx.html