類的屬性值的復(fù)制

什么意思呢?先說(shuō)明一下場(chǎng)景吧!項(xiàng)目中有一個(gè)類(Vehicle,其中大概有50多個(gè)屬性),另外還有若干API,暫且叫做:api100, api200, api300吧。其中api100和api200用于查詢Vehicle,分別查詢出一部分屬性值,兩部分拼裝在一起才能形成一個(gè)完整的Vehicle,即:api100=>Vehicle, api200=>Vehicle,需要將兩個(gè)不完整的Vehicle組成一個(gè)完整的Vehicle傳給api300來(lái)繼續(xù)下一個(gè)請(qǐng)求。
Spring和Apache beanutil都提供了copyProperty方法,但是都不能滿足需求,因?yàn)榈谝粋€(gè)Vehicle對(duì)象的值為null的屬性會(huì)覆蓋第二個(gè)對(duì)象,算了,還是自己來(lái)寫吧,反正前兩個(gè)用的也是反射實(shí)現(xiàn)的。那就自己用反射吧!

 /** 
  * 用source中的屬性值不為null的屬性值填充target 
  * @param source 要復(fù)制的對(duì)象 
  * @param target 要復(fù)制的對(duì)象 
  */
  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();    
       }
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,268評(píng)論 6 342
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,790評(píng)論 11 349
  • 當(dāng)自己不忙時(shí),不值錢時(shí),沒有一技之長(zhǎng)時(shí),首先要做的是學(xué)習(xí)成長(zhǎng),不斷的投資自己學(xué)習(xí)成長(zhǎng),讓自己先變得值錢起來(lái),自...
    劉虎虎222婚禮紀(jì)實(shí)閱讀 194評(píng)論 0 0
  • 慕容回答了關(guān)于微信公眾號(hào),還有朋友們問慕容的一些問題,針對(duì)一些問的比較多的問題做了回答。 回答如下: 做個(gè)認(rèn)真努力...
    慕容匪我閱讀 361評(píng)論 0 4

友情鏈接更多精彩內(nèi)容