EffectiveJava13-慎重重写clone方法

如果类没有实现Cloneable接口,调用super.clone()将会抛出CloneNotSupportedException异常。

super.clone()只是简单复制,如果对象带有可变属性(例如:数组),那么复制后的对象将和源对象引用同样的可变属性,安全性将出问题,为了避免该问题,需要采用自己实现深度克隆。

例如:
...
@SuppressWarnings("unchecked")
public Stack clone() throws CloneNotSupportedException {
Stack stack = (Stack) super.clone();
stack.elements = elements.clone();
return stack;
}
...

你可能感兴趣的:(EffectiveJava13-慎重重写clone方法)