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

解決Beanutils.copyproperties實(shí)體類對象不一致的問題

 更新時(shí)間:2021年06月16日 09:54:43   作者:Java中的kids  
這篇文章主要介紹了解決Beanutils.copyproperties實(shí)體類對象不一致的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

今天給大家分析一個(gè)解決Beanutils.copyproperties實(shí)體類對象名不一致的解決方法,一般我們在兩個(gè)對象拷貝的問題上,我個(gè)人用的比較多的就是Beanutils.copyproperties,字段名如果不一致的話就去實(shí)體類中使用重載,把當(dāng)前實(shí)體類的對象賦值給另外一個(gè)對象,也有用到set(),當(dāng)然這些也都能解決Beanutils.copyproperties實(shí)體類屬性不一致的問題,不過今天要給大家分享的是,不用set()和實(shí)體類的重構(gòu),使用類的反射機(jī)制去完成!

話不多說直接開始:

我是選擇重寫了一個(gè)實(shí)體類copy工具類首先要獲取傳過來的兩個(gè)對象的類( getClass() 方法),

通過獲取類再去獲取對象中的屬性

( getDeclaredFields() 方法)

fieId.setAccessible(true) 方法是false時(shí)不允許通過反射訪問該字段,所以要設(shè)置成true用一個(gè)HashMap去接受,

第二個(gè)類也是一樣的操作

都說了是解決實(shí)體類屬性不一致的方法啦,所以實(shí)體類要有不一樣的字段,那么我們應(yīng)該怎么讓系統(tǒng)知道這個(gè)字段和那個(gè)字段是要干一件事情呢?

就比如,欸我今天不去釣魚,要去當(dāng)舔🐕,就是玩,朋友他只能去當(dāng)舔🐕,我們的目的都是當(dāng)舔🐕,但是出發(fā)點(diǎn)都是不同,所以要讓系統(tǒng)知道我們要去干嘛 這時(shí)候要用到一個(gè)注解(FieldMap )讓系統(tǒng)清楚我們要去干同一件事情

這是FieldMap類

既然我們已經(jīng)讓系統(tǒng)知道了誰要去干嘛了,當(dāng)然要去獲取他了,這時(shí)候就要用到fleId.getAnnotation()方法了,獲取注解上的Name的值,然后拿Name的值去做判斷,所以用到了getType()去獲取類型去做判斷

這樣就解決了Beanutils.copyproperties實(shí)體類對象不一致就copy不進(jìn)去的問題了。

spring的BeanUtils.copyProperties(obj1, obj2);復(fù)制對象時(shí)字段類型不一致,導(dǎo)致賦值不上

當(dāng)用spring的BeanUtils.copyProperties(obj1, obj2);對象進(jìn)行復(fù)制時(shí),因?yàn)樵趏bj1 類型的對象中定義的屬性類型不同(set方法中用的是Integer類型,get方法中返回的是int類型):

public int getNumber() {
    return number;
  }
  public void setNumber(Integer number) {
    this.number = number;
  }

這樣在使用復(fù)制方法時(shí),就不會(huì)對這個(gè)number屬性進(jìn)行賦值。這里必須是:

public int getNumber() {
    return number;
  }
  public void setNumber(int number) {
    this.number = number;
  }

這里是因?yàn)椋簊pring在利用反射復(fù)制對象時(shí),是以javaBean的規(guī)范來使用get/set方法進(jìn)行設(shè)置值的。同時(shí)set方法的參與類型,在classLoader中,也會(huì)被計(jì)為函數(shù)名的一部分。

所有這里必須都是int類型或者都是integer類型。否則spring就不會(huì)對該屬性進(jìn)行復(fù)制相應(yīng)的值。

第二個(gè)知識(shí)點(diǎn):

應(yīng)用場景:當(dāng)我修改一個(gè)工程里的jar包內(nèi)的一個(gè)類時(shí)(其實(shí)改動(dòng),就是把上一個(gè)知識(shí)點(diǎn)里的Integer類型修改成了int類型),然后到去替換服務(wù)器上對應(yīng)的jar包后,重啟工程會(huì)出現(xiàn):NoSuchMethodError這樣的錯(cuò)。

原因是:基本數(shù)據(jù)類型與包裝類型的解包封包是由編譯器提供的(這在jdk 1.5引入)。void setNumber(int a)與 void setNumber(Integer a); 對于編譯器來說是不同的方法,他們的有著不同的方法簽名。

這里就涉及到Java編輯器對Java方法編譯的問題:在Java中,編輯器會(huì)把函數(shù)的參數(shù)列表與函數(shù)名稱一起作為內(nèi)存中標(biāo)記函數(shù)唯一性的標(biāo)識(shí),這也是Java代碼可以重載的原因。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 8 新特性終極版指南詳解

    Java 8 新特性終極版指南詳解

    Java 8已經(jīng)公布有一段時(shí)間了,種種跡象表明Java 8是一個(gè)有重大改變的發(fā)行版。本文給大家介紹Java 8 新特性終極版指南詳解,需要的朋友參考下
    2016-03-03
  • 淺談Maven環(huán)境隔離應(yīng)用

    淺談Maven環(huán)境隔離應(yīng)用

    這篇文章主要介紹了淺談Maven環(huán)境隔離應(yīng)用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • SpringBoot2.0 中 HikariCP 數(shù)據(jù)庫連接池原理解析

    SpringBoot2.0 中 HikariCP 數(shù)據(jù)庫連接池原理解析

    這篇文章主要介紹了SpringBoot2.0 中 HikariCP 數(shù)據(jù)庫連接池原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java修改eclipse中web項(xiàng)目的server部署路徑問題

    Java修改eclipse中web項(xiàng)目的server部署路徑問題

    這篇文章主要介紹了Java修改eclipse中web項(xiàng)目的server部署路徑,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java Swing組件編程之JTable表格用法實(shí)例詳解

    Java Swing組件編程之JTable表格用法實(shí)例詳解

    這篇文章主要介紹了Java Swing組件編程之JTable表格用法,結(jié)合實(shí)例形式詳細(xì)分析了Swing組件中JTable表格的常見定義與使用方法,需要的朋友可以參考下
    2017-11-11
  • SpringBoot+MyBatisPlus對Map中Date格式轉(zhuǎn)換處理的方法詳解

    SpringBoot+MyBatisPlus對Map中Date格式轉(zhuǎn)換處理的方法詳解

    在?SpringBoot?項(xiàng)目中,?如何統(tǒng)一?JSON?格式化中的日期格式。本文將為大家介紹一種方法:利用MyBatisPlus實(shí)現(xiàn)對Map中Date格式轉(zhuǎn)換處理,需要的可以參考一下
    2022-10-10
  • 詳解IDEA社區(qū)版(Community)和付費(fèi)版(UItimate)的區(qū)別

    詳解IDEA社區(qū)版(Community)和付費(fèi)版(UItimate)的區(qū)別

    這篇文章主要介紹了詳解IDEA社區(qū)版(Community)和付費(fèi)版(UItimate)的區(qū)別,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • sa-token整合springboot中的代碼示例展示

    sa-token整合springboot中的代碼示例展示

    sa-token?是一個(gè)輕量級(jí)的 Java 權(quán)限認(rèn)證框架,它可以很方便地集成到 Spring Boot 項(xiàng)目中,以提供簡潔的認(rèn)證和授權(quán)功能,這篇文章主要介紹了sa-token整合springboot中的代碼示例展示,需要的朋友可以參考下
    2024-04-04
  • 解決springboot上傳圖片后無法立即訪問需重啟的問題

    解決springboot上傳圖片后無法立即訪問需重啟的問題

    這篇文章主要介紹了解決springboot上傳圖片后無法立即訪問需重啟的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Jenkins自動(dòng)化打包為war包

    Jenkins自動(dòng)化打包為war包

    這篇文章主要介紹了Jenkins自動(dòng)化打包為war包,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論