谨慎地覆盖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;
  }
}

你可能感兴趣的:(谨慎地覆盖clone方法)