美文网首页
BeanUtils.copyProperties遇到的小坑

BeanUtils.copyProperties遇到的小坑

作者: wangxiaoyu | 来源:发表于2018-09-25 11:55 被阅读0次

主要问题描述:两个对象分别由同一个对象copy过来,对象中有一个成员变量是Map,用该map的时候是同一个引用对象。
BeanUtils类全路径为org.springframework.beans.BeanUtils

类大致如下:

@Data
class A {
    private Integer id;
    private Map<Integer,String> map = new HashMap<>();
}

问题代码

A source = new A();
source.setId(1);
A copy1 = new A();
BeanUtils.copyProperties(source, copy1);
A copy2 = new A();
BeanUtils.copyProperties(source, copy2);
copy1.getMap().put(1,"1");
copy2.getMap().put(1,"2");
System.out.println(copy1.getMap().get(1));
//以为是"1",实际是"2"
System.out.println(copy2.getMap().get(1));
//"2"
System.out.println(copy1.getMap() == copy2.getMap());
//true,直接对比引用

原因分析,BeanUtils.copyProperties利用反射,直接将对象的引用set进去,并不是深拷贝。

相关文章

  • BeanUtils.copyProperties遇到的小坑

    主要问题描述:两个对象分别由同一个对象copy过来,对象中有一个成员变量是Map,用该map的时候是同一个引用对象...

  • BeanUtils.copyproperties 属性的坑

    上述的只能拷贝属性,属于浅拷贝,底层是通过反射将属性值set 进去的,针对集合和数组是不能复制的

  • 从一个类到另一个类,copy属性

    BeanUtils.copyProperties(data, vo);

  • 你拥有的最宝贵的财富是什么?——摘要

    我们的生活经历中,或多或少都会遇到一些“坑”,它们有大有小,遇到大的,掉进去就出不来了。遇到小的坑,或许可能还是一...

  • 小程序的遇到的坑

    1.开发小程序的时候还没有支持页面自己的下拉刷新: 于是用组件scroll-view自己写了一个模仿数据下拉刷新,...

  • Android 输入金额限制,各种限制~

    小菜最近因工作需要做一个支付金额对话框的小模块,技术很浅显,遇到几个小坑,分享给大家~ 小菜遇到的坑之一: ...

  • 小程序开发遇到的坑

    1、cover-image组件的src若是网络地址,记得必须带协议,不然在移动端显示不出图片 2、iPhone 6...

  • 小程序中遇到的坑

    小程序 如何去写小程序: 原生的小程序 腾讯的wepy框架 美团的mpvue框架 京东的taro框架 h5适配移动...

  • Vue watch遇到的小坑

    同事的watch 函数总是访问this有问题,我帮忙检查了一阵子,最后发现是定义函数的时候用了箭头函数。箭头函数绑...

  • 小程序遇到session的坑

    1.问题: 小程序对接接口时,突然发现理所应当的session部分无效,查阅文档找到了合理的解决方案,记录一下。 ...

网友评论

      本文标题:BeanUtils.copyProperties遇到的小坑

      本文链接:https://www.haomeiwen.com/subject/bsnkoftx.html