Java对象赋值

说明

其实这个问题,很多人都有提到过,但是在编程的路上,一些坑,自己没有踩过,永远不能理解,同样也会不记住。 如下端代码的赋值:

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

原理

对象是引用类型的,所以如果你把一个对象赋值给另一个变量,它实际上只是把内存地址赋值了,简单的讲,就是paramModel 或者paramModel 1的任何一个值被修改,其他值都会跟着修改。

场景

我需要保持paramModel 不变化,但是paramModel 中已存在一些数据,不想重新重新创建对象。就这么简单的赋值,然后发现自己想象中的数据不变化,全部都变了。所以BUG出现了。

解决方案

使用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);               

转载于:https://my.oschina.net/u/2948232/blog/915241

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值