开发者

Java关于BeabUtils.copyproperties的用法

目录
  • 关于BeabUtils.copyproperties用法
  • 用法
  • 注意
  • Spring中的BeanUtils.copyProperties方法是深拷贝还是浅拷贝
    • 理解什么是浅拷贝 , 什么是深拷贝 ?
    • BeanUtils.copyPropertpythonies方法是深拷贝还是浅拷贝?
  • 总结

    关于BeabUtils.copyproperties用法

    BeanUtils它提供了对Java反射和自省API的包装。

    它里面还有很多工具类,这里我们介绍一下copyProperties。

    使用BeanUtils.copyProperties方法进行对象之间属性的赋值,避免通过get、set方法一个一个属性的赋值,减少js了代码工作量。

    用法

    BeanUtils.copyProperties("被赋值的对象", "被复制的对象");

    注意

    例子:BeanUtils.copyProperties(a, b)

    • 1、a和b可以是不同的类;
    • 2、b中的存在的属性,a中一定要有,但是a中可以有多余的属性。
    • 3、a中与b中相同的属性都会被替换,不管a中的属性是否有值。
    • 4、a、 b中的属性要名字相同,才能被赋值,不然的话需要手动赋值。
    • 5、Spring的BeanUtils的CopyProperties方法需要对应的属性有getter和setter方法。
    • 6、spring和apache的copy属性的方法源和目的参数的位置正好相反,所以导包和调用的时候都要注意一下。

    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;
        //ge编程客栈t set方法此处省略
        }
    @Test
    public void CopyTest(){
            //创建对象
       android     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.pri编程客栈ntln("oldPerson = " + oldPerson.getUser());
            System.out.println("newPerson = " + newPerson.getUser());
        }

    打印结果 :

    Java关于BeabUtils.copyproperties的用法

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜