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: 在此处复制可变状态,因此该 clone 无法更改原始 clone 的内部;
return clone;
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
}
使用忽略由于继承而可克隆的类选项,可忽略因继承自 Cloneable
类而 Cloneable
的类。
使用忽略需要 Cloneable 才能调用超类的 clone() 方法的情况选项,以忽略从超类调用 clone()
方法因而需要实现 Cloneable
的类。