java的深拷贝与浅拷贝,java 对象深拷贝

  java的深拷贝与浅拷贝,java 对象深拷贝

  1.要复制对象,必须实现一个可克隆的接口。如果未实现此接口,将会生成CloneNotSupportedException异常。实际上这个接口是没有方法的,所以这种接口通常被称为标签接口。

  2.Object中有一个clone()方法实现浅层复制。对于基本数据类型的成员变量,浅拷贝会直接传递值,也就是将属性值拷贝到一个新的对象上,所以基本数据类型可以直接浅拷贝。

  对于可变数据类型,如日期对象,需要深层复制。当然,Date类自己实现了clone()方法,而String类没有,因为String对象是一个不可变的字符序列,在其生命周期内没有办法修改其内存中的字符序列。不同对象中的相似属性引用同一个字符串没有问题。

  java学习视频教程:Java学习视频

  例子如下:

  公共类Main{

  公共静态void main(String[] args){

  }

  }

  类Employee实现可克隆的{

  private int id

  私人约会日期;

  公共雇员(){}

  公共雇员(int id){

  this.id=id

  this . Date=new Date();

  }

  @覆盖

  public Employee clone()抛出CloneNotSupportedException{

  object t=super . clone();//此时object中的副本只是一个浅层副本

  员工克隆=(员工)t;

  clone . date=this . data . clone();//date类实现深度复制,可以直接调用。

  返回克隆;

  }

  }

  类别管理器扩展员工{

  私有字符串名称;

  公共管理者(){

  super();

  }

  公共管理器(字符串名称,int id){

  超级(id);

  this.name=name

  }

  @覆盖

  公共管理器克隆(){

  员工t=super . clone();//首先复制id日期属性。

  man nager clone=(man nager)t;

  clone . name=t . name;//String对象直接分配引用

  返回克隆;

  }

  }更多java相关文章推荐:java入门教程以上是java对象复制的深度复制和浅层复制的详细内容。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: