分类

  • 浅拷贝

    • 仅仅复制值类型,及引用类型的对象地址,不复制引用的对象本身;

  • 深拷贝

    • 无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象;

方式

手动

    new 一个新对象,set值


Object的clone() 方法

    需要实现Cloneable接口


通过对象序列化

    把对象写到流里(序列化),再把对象从流中读出来(反序列化)


使用工具类BeanUtils

  • Spring BeanUtils(推荐)

  • Apache BeanUtils(加了很对校验及转换导致性能差,不推荐)

使用Spring的BeanUtils进行对象拷贝

User userSource = new User(1, "ziry", "12345");
ThirdUser userDest = new ThirdUser();
BeanUtils.copyProperties(userSource,userDest);
System.out.println("userDest: "+userDest);

还有其他拷贝框架,比如:Dozer、ModelMapper等



注意:本文归作者所有,未经作者允许,不得转载