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
的类。