其实这个问题,不少人都有提到过,可是在编程的路上,一些坑,本身没有踩过,永远不能理解,一样也会不记住。 以下端代码的赋值: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);