Java中的假克隆、浅克隆、深克隆

来源:互联网 发布:人工智能的未来 mobi 编辑:程序博客网 时间:2024/06/05 22:19

      Java中的克隆值的是对象的克隆,是指在堆空间中复制一块儿内存,是完全相同的两个对象。需要通过实现接口Cloneable或者是通过序列化等方式来实现。

      假克隆是指对象的赋值,仅仅代表指针指向的改变,而不会创建新的内存单元。如下:

Employee employee1 = new Employee();// 创建Employee对象employee1Employee employee2 = employee1; // 将employee1赋值给employee2

      而浅克隆是指在在克隆的过程中,仅仅克隆对象的基本数据类型。而对于对象内部的嵌套对象,也称为引用类型,则不能实现克隆。比如说,首先定义一个地址类:

public class Address {}

      然后在定义一个实现了cloneable接口的employee类,在employee类中实现了对address类的引用:

public class Employee implements Cloneable {}

      最后再进行对象创建:

Address address = new Address("中国", "吉林", "长春");// 创建address对象Employee employee1 = new Employee("张XX", 30, address);// 创建employee1对象Employee employee2 = employee1.clone();// 使用克隆创建employee2对象

      此时就实现了浅克隆。


      深度克隆是指在克隆的过程中,不仅实现克隆对象的基本数据类型,而且对于其引用类型也可以克隆。如下,首先定义一个地址类,这个类实现了接口cloneable,

public class Address implements Cloneable {}

      其次定义一个employee类,同样的实现了cloneable接口,同时在employee类中实现了对address类的引用。

public class Employee implements Cloneable {}
      最受进行对象创建:

Address address = new Address("中国", "吉林", "长春");// 创建address对象Employee employee1 = new Employee("张XX", 30, address);// 创建employee1对象Employee employee2 = employee1.clone();// 使用克隆创建employee2对象
      此时就实现了深度克隆。





0 0
原创粉丝点击