谨慎地覆盖clone方法

第十一条:谨慎地覆盖clone方法

(注意本文不适合学习,纯属个人笔记)


1. clone方法简介

关于clone方法的简介可以看这里
简单总结一下,在java中我们想得到一个和之前用过的对象一模一样的新对象,简单的使用=符号复制是不行的,我们需要用到clone方法,这就是clone方法的用处。因为clone方法是protected类型的,所以不能在外部直接使用,下面一段代码简单说明一下clone方法的使用:

public class CloneObject implements Cloneable {
  public String field01;
  public Object clone() {
    try {
      return super.clone();
    } catch (CloneNotSupportedException e) {
      e.printStackTrace();
      throw new AssertionError();
    }
  }
}

首相我们需要是想Cloneable接口,然后再重载一个public类型的clone方法,然后在里面返回super.clone()就行了。

2. 使用拷贝构造器或者拷贝工厂方法来代替覆盖Clone方法

拷贝构造器例子:

public class MyObject {
  public String field01;

  public MyObject() {
  }

  public MyObject(MyObject object) {
    this.field01 = object.field01;
  }
}

拷贝静态工厂:

public class MyObject {
  public String field01;

  public MyObject() {
  }

  public static MyObject newInstance(MyObject object) {
    MyObject myObject = new MyObject();
    myObject.field01 = object.field01;
    return myObject;
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容