最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入java對象復制的分析

 更新時間:2013年05月17日 10:05:48   作者:  
本篇文章是對java對象復制進行了詳細的分析介紹,需要的朋友參考下

java本身提供了對象復制的能力,在java.lang.Object類中有clone方法,該方法是一個protected方法,在子類需要重寫此方法并聲明為public類型,而且還需實現(xiàn)Cloneable接口才能提供對象復制的能力,clone()是一個native方法,native方法的效率一般來說都是遠高于java中的非native方法,對性能比較關心的話首先考慮這種方式,這種復制在網(wǎng)上有很多例子就不多寫了;在這要用的另一種方式——通過java的反射機制復制對象,這種方式效率可能會比clone()低,而且不支持深度復制以及復制集合類型,但通用性會提高很多,下邊是進行復制的代碼:

復制代碼 代碼如下:

private <T> T getBean(T TargetBean, T SourceBean) {
        if (TargetBean== null) return null;
        Field[] tFields = TargetBean.getClass().getDeclaredFields();
        Field[] sFields = SourceBean.getClass().getDeclaredFields();
        try {
            for (Field field : tFields ) {
                String fieldName = field.getName();
                if (fieldName.equals("serialVersionUID")) continue;
                if (field.getType() == Map.class) continue;

                if (field.getType() == Set.class) continue;

                if (field.getType() == List.class) continue;
                for (Field sField : sFields) {
                    if(!sField .getName().equals(fieldName)){
                        continue;
                    }
                    Class type = field.getType();
                    String setName = getSetMethodName(fieldName);
                    Method tMethod = TargetBean.getClass().getMethod(setName, new Class[]{type});
                    String getName = getGetMethodName(fieldName);
                    Method sMethod = SourceBean.getClass().getMethod(getName, null);
                    Object setterValue = voMethod.invoke(SourceBean, null);
                    tMethod.invoke(TargetBean, new Object[]{setterValue});
                }
            }
        } catch (Exception e) {
            throw new Exception("設置參數(shù)信息發(fā)生異常", e);
        }
        return TargetBean;
}


該方法接收兩個參數(shù),一個是復制的源對象——要復制的對象,一個是復制的目標對象——對象副本,當然這個方法也可以在兩個不同對象間使用,這時候只要目標對象和對象具有一個或多個相同類型及名稱的屬性,那么就會把源對象的屬性值賦給目標對象的屬性。

相關文章

  • Java RabbitMQ的TTL和DLX全面精解

    Java RabbitMQ的TTL和DLX全面精解

    過期時間TTL表示可以對消息設置預期的時間,在這個時間內(nèi)都可以被消費者接收獲??;過了之后消息將自動被刪除。DLX, 可以稱之為死信交換機,當消息在一個隊列中變成死信之后,它能被重新發(fā)送到另一個交換機中,這個交換機就是DLX ,綁定DLX的隊列就稱之為死信隊列
    2021-09-09
  • java實現(xiàn)計算周期性提醒的示例

    java實現(xiàn)計算周期性提醒的示例

    本文分享一個java實現(xiàn)計算周期性提醒的示例,可以計算父親節(jié)、母親節(jié)這樣的節(jié)日,也可以定義如每月最好一個周五,以方便安排會議
    2014-04-04
  • Mybatis-Plus?動態(tài)表名的實踐

    Mybatis-Plus?動態(tài)表名的實踐

    本文主要介紹了Mybatis-Plus?動態(tài)表名的實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • Java從控制臺讀入數(shù)據(jù)的幾種方法總結(jié)

    Java從控制臺讀入數(shù)據(jù)的幾種方法總結(jié)

    下面小編就為大家?guī)硪黄狫ava從控制臺讀入數(shù)據(jù)的幾種方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • java的內(nèi)部類和外部類用法講解

    java的內(nèi)部類和外部類用法講解

    本文詳細講解了java的內(nèi)部類和外部類用法,文中通過示例代碼介紹的非常詳細。對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • 詳解Java高級特性之反射

    詳解Java高級特性之反射

    這篇文章主要介紹了Java高級特性之反射的相關知識,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • Spring boot整合mybatis實現(xiàn)過程圖解

    Spring boot整合mybatis實現(xiàn)過程圖解

    這篇文章主要介紹了Spring boot整合mybatis實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 詳解Spring MVC/Boot 統(tǒng)一異常處理最佳實踐

    詳解Spring MVC/Boot 統(tǒng)一異常處理最佳實踐

    在 Web 開發(fā)中, 我們經(jīng)常會需要處理各種異常,這篇文章主要介紹了詳解Spring MVC/Boot 統(tǒng)一異常處理最佳實踐,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Java壓縮之LZW算法字典壓縮與解壓講解

    Java壓縮之LZW算法字典壓縮與解壓講解

    今天小編就為大家分享一篇關于Java壓縮之LZW算法字典壓縮與解壓講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • SpringCloud之@FeignClient()注解的使用方式

    SpringCloud之@FeignClient()注解的使用方式

    這篇文章主要介紹了SpringCloud之@FeignClient()注解的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論

义乌市| 和顺县| 怀化市| 三明市| 砚山县| 顺平县| 广河县| 阳曲县| 安宁市| 岳西县| 衡山县| 苍南县| 景洪市| 鄢陵县| 武安市| 张家口市| 古蔺县| 永定县| 临颍县| 金门县| 新丰县| 新乡县| 明星| 靖西县| 萨迦县| 洛扎县| 石楼县| 泗洪县| 司法| 萨迦县| 三台县| 东宁县| 通渭县| 临洮县| 新沂市| 定日县| 秦皇岛市| 郯城县| 大关县| 阳泉市| 兰坪|