类的属性值的复制

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

你可能感兴趣的:(类的属性值的复制)