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