Java對象賦值

說明

其實這個問題,不少人都有提到過,可是在編程的路上,一些坑,本身沒有踩過,永遠不能理解,一樣也會不記住。 以下端代碼的賦值:apache

CommonSearch paramModel = new CommonSearch();
    CommonSearch paramModel1 = paramModel ;

原理

對象是引用類型的,因此若是你把一個對象賦值給另外一個變量,它實際上只是把內存地址賦值了,簡單的講,就是paramModel 或者paramModel 1的任何一個值被修改,其餘值都會跟着修改。編程

場景

我須要保持paramModel 不變化,可是paramModel 中已存在一些數據,不想從新從新建立對象。就這麼簡單的賦值,而後發現本身想象中的數據不變化,所有都變了。因此BUG出現了。code

解決方案

使用BeanUtils中的方法。 jar包 commons-beanutils-1.9.3.jar對象

<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.3</version>
</dependency>
import org.apache.commons.beanutils.BeanUtils;
    ...
    //searchModel 是一個存在數值的CommonSearch 對象
    CommonSearch paramModel = new CommonSearch();
    BeanUtils.copyProperties(paramModel, searchModel);
相關文章
相關標籤/搜索