【发布时间】:2018-05-20 11:49:57
【问题描述】:
例如,class A 实现了可克隆,它是一个抽象类,class B 扩展了 class A。
假设我只需要 B 类 中的克隆方法。 还需要用吗
A result = (A)super.clone();
在clone 方法中?
【问题讨论】:
-
Java clone() method的可能重复
例如,class A 实现了可克隆,它是一个抽象类,class B 扩展了 class A。
假设我只需要 B 类 中的克隆方法。 还需要用吗
A result = (A)super.clone();
在clone 方法中?
【问题讨论】:
不,你可以在 B 中实现 clone() 为:
public B clone() {
try {
return (B) super.clone();
} catch (CloneNotSupportedException e) {
throw new IllegalStateException(e);
}
}
注意:clone() 方法未在Cloneable 接口中定义。 Cloneable 只是一个所谓的“标记”界面。所以A 根本不需要clone() 方法。
(您也可以将该方法声明为抛出 CNSE 并让调用者处理它。还要注意 clone() 和 Cloneable 这些天有点不受欢迎。考虑简单地提供一个复制构造函数来代替采用 @ 987654331@ 并复制其字段的值。)
【讨论】: