Spring当中的BeanUtils.copyProperties方法是深拷贝还是浅拷贝?

一、理解什么是浅拷贝 , 什么是深拷贝 ?

  •  拷贝 :  顾名思义 ,在 Java当中就是 将一个类 的 属性 通过 get 和 set 方法来 赋值 给到 另一个类当中的属性 . 
  • 浅拷贝 :  如果是引用类型 , 那么目标对象拷贝的只是源对象的地址 (无论目标对象还是源对象的改变 , 它们都会一起发生改变)[引用的一个内存地址]
  • 深拷贝 :  即将源对象的属性值 全部复制到 目标对象相应属性 (复制完之后,它们之间是隔开的 , 没有任何关系 , 无论操作源对象 还是目标对象 都是对另一个没有影响)[将子对象的属性也拷贝过去]

二、BeanUtils.copyProperties方法是深拷贝还是浅拷贝?

  • 答 : 浅拷贝 .
  • 测试代码 :
public class User {
    private int id;
    private String username;// 用户姓名
    //get set方法此处省略
}

 

public class Person {
    private Object user;
    //get set方法此处省略
    }
@Test
public void CopyTest(){
        //创建对象
        User user=new User();
        user.setId(1);
        user.setUsername("对象1");
        Person oldPerson = new Person();
        oldPerson.setUser(user);

        Person newPerson = new Person();

        BeanUtils.copyProperties(oldPerson,newPerson);
        System.out.println(newPerson.getUser().toString());
        //输出地址
        System.out.println("oldPerson = " + oldPerson.getUser());
        System.out.println("newPerson = " + newPerson.getUser());
    }

打印结果 :

        

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值