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);
相关文章
相关标签/搜索