亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入java對象復(fù)制的分析

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

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

復(fù)制代碼 代碼如下:

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è)置參數(shù)信息發(fā)生異常", e);
        }
        return TargetBean;
}


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

相關(guān)文章

  • Java實(shí)現(xiàn)圖像分割功能

    Java實(shí)現(xiàn)圖像分割功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖像分割功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 學(xué)習(xí)C語言對后期java有幫助嗎

    學(xué)習(xí)C語言對后期java有幫助嗎

    在本篇文章里小編給大家整理的是一篇關(guān)于學(xué)習(xí)C語言對后期java有幫助嗎的基礎(chǔ)文章,有興趣的朋友們可以參考下。
    2020-11-11
  • SpringBoot中Mybatis + Druid 數(shù)據(jù)訪問的詳細(xì)過程

    SpringBoot中Mybatis + Druid 數(shù)據(jù)訪問的詳細(xì)過程

    Spring Boot 底層都是采用 SpringData 的方式進(jìn)行統(tǒng)一處理各種數(shù)據(jù)庫,SpringData也是Spring中與SpringBoot、SpringCloud 等齊名的知名項(xiàng)目,下面看下SpringBoot Mybatis Druid數(shù)據(jù)訪問的詳細(xì)過程,感興趣的朋友一起看看吧
    2021-11-11
  • 利用Spring Cloud Config結(jié)合Bus實(shí)現(xiàn)分布式配置中心的步驟

    利用Spring Cloud Config結(jié)合Bus實(shí)現(xiàn)分布式配置中心的步驟

    這篇文章主要介紹了利用Spring Cloud Config結(jié)合Bus實(shí)現(xiàn)分布式配置中心的相關(guān)資料,文中通過示例代碼將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來一起看看吧
    2018-05-05
  • Java基礎(chǔ)之教你怎么用代碼一鍵生成POJO

    Java基礎(chǔ)之教你怎么用代碼一鍵生成POJO

    這篇文章主要介紹了Java基礎(chǔ)之教你怎么用代碼一鍵生成POJO,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)Java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 詳解JavaScript中的函數(shù)聲明和函數(shù)表達(dá)式

    詳解JavaScript中的函數(shù)聲明和函數(shù)表達(dá)式

    這篇文章主要介紹了詳解JavaScript中的函數(shù)聲明和函數(shù)表達(dá)式,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • java操作mongodb實(shí)現(xiàn)CURD功能實(shí)例

    java操作mongodb實(shí)現(xiàn)CURD功能實(shí)例

    mongodb支持多種語言,并且提供了多種語言的驅(qū)動(dòng),本文使用java操作mongodb實(shí)現(xiàn)CURD功能,大家參考使用吧
    2013-12-12
  • Java中security與shiro的區(qū)別詳解

    Java中security與shiro的區(qū)別詳解

    這篇文章主要介紹了Java中security與shiro的區(qū)別詳解,Spring?Security在架構(gòu)上將認(rèn)證與授權(quán)分離,并提供了擴(kuò)展點(diǎn),它是一個(gè)輕量級(jí)的安全框架,它確?;赟pring的應(yīng)用程序提供身份驗(yàn)證和授權(quán)支持,需要的朋友可以參考下
    2023-08-08
  • Java比較兩個(gè)對象是否相等的方法

    Java比較兩個(gè)對象是否相等的方法

    這篇文章主要介紹了Java比較兩個(gè)對象是否相等的方法,文中給出了三種方法,并通過代碼講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • java并發(fā)學(xué)習(xí)-CountDownLatch實(shí)現(xiàn)原理全面講解

    java并發(fā)學(xué)習(xí)-CountDownLatch實(shí)現(xiàn)原理全面講解

    這篇文章主要介紹了java并發(fā)學(xué)習(xí)-CountDownLatch實(shí)現(xiàn)原理全面講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評(píng)論