在您的情况下,您可以覆盖
clone():
public class A {}public class B extends A implements Cloneable { @Override public B clone() throws CloneNotSupportedException { return (B) super.clone(); }}
而且仍然有一个有效的克隆机制-因此,当您陈述自己时,您就是在说实话
implements Cloneable。
A一个
private变量。
public class A { private int a;}
现在您的诺言被兑现了-除非A实现
clone,在这种情况下,您可以使用
super.clone():
public class A { private int a; @Override public A clone() throws CloneNotSupportedException { A newA = (A) super.clone(); newA.a = a; return newA; }}public class B extends A implements Cloneable { private int b; @Override public B clone() throws CloneNotSupportedException { B newB = (B) super.clone(); newB.b = b; return newB; }}
从本质上讲-正如Joshua Bloch所说-如果您不实现
clone子类,也就不能(通常)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)