说明
其实这个问题,很多人都有提到过,但是在编程的路上,一些坑,自己没有踩过,永远不能理解,同样也会不记住。 如下端代码的赋值:
CommonSearch paramModel = new CommonSearch(); CommonSearch paramModel1 = paramModel ;
原理
对象是引用类型的,所以如果你把一个对象赋值给另一个变量,它实际上只是把内存地址赋值了,简单的讲,就是paramModel 或者paramModel 1的任何一个值被修改,其他值都会跟着修改。
场景
我需要保持paramModel 不变化,但是paramModel 中已存在一些数据,不想重新重新创建对象。就这么简单的赋值,然后发现自己想象中的数据不变化,全部都变了。所以BUG出现了。
解决方案
使用BeanUtils中的方法。 jar包 commons-beanutils-1.9.3.jar
commons-beanutils commons-beanutils 1.9.3
import org.apache.commons.beanutils.BeanUtils; ... //searchModel 是一个存在数值的CommonSearch 对象 CommonSearch paramModel = new CommonSearch(); BeanUtils.copyProperties(paramModel, searchModel);