Cloneable 接口但不重写 clone() 方法的类。
这种类使用 clone() 的默认实现,它不是 public,而是 protected,并且不复制该类的可变状态。
可以通过快速修复生成基本的 clone() 方法,它可以作为 Cloneable 类所期望的正常运行的 clone() 方法的基础。
示例:
public class Data implements Cloneable {
private String[] names;
}
在应用快速修复后:
public class Data implements Cloneable {
private String[] names;
@Override
public Data clone() {
try {
Data clone = (Data) super.clone();
// TODO:在此处复制可变状态,因此克隆无法更改原始克隆的内部项
return clone;
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
}
使用忽略由于继承而可克隆的类选项可以忽略因继承自 Cloneable 类而 Cloneable 的类。
使用忽略需要 Cloneable 才能调用超类的 clone() 方法的情况选项可以忽略因从超类调用 clone() 方法而需要实现 Cloneable 的类。