这是clone技术介绍的第一篇。本篇主要介绍对象clone技术的基本知识。
-
Clone基本知识储备
在Java里提到clone技术,就不能不提java.lang.Cloneable接口和含有clone方法的Object类。所有具有clone功能的类都有一个特性,那就是它直接或间接地实现了Cloneable接口。否则,我们在尝试调用clone()方法时,将会触发CloneNotSupportedException异常。下面我们通过对Object类的部分源码的分析,来发现和理解这一特性。请看JDK中Object# clone()方法的源码:
/*
…………
* @return a clone of this instance.
* @exception? CloneNotSupportedException? if the object's class does not
*support the Cloneable
interface. Subclasses
*that override the clone
method can also
* throw this exception to indicate that an instance cannot
*be cloned.
* @see java.lang.Cloneable
*/
protected native Object clone() throws CloneNotSupportedException;
这段源码的@exception部分的描述内容证实了上文关于clone对象特性论断的正确性。它明确指出对象类必须支持Cloneable接口,否则即使派生类覆盖了Object#clone()方法,也同样会抛出CloneNotSupportedException这个异常。关于覆盖clone()方法,后续文章将会用专门篇幅进行比较详细的分析。