Cloneable接口的目的是作为对象的一个mixin接口,表明这样的对象允许克隆。如果一个类实现了Cloneable接口,Object的clone方法就返回该对象的逐域拷贝,相当于无需调用构造器就可以创建对象。
克隆复杂对象的方法是:先调用super.clone(),然后通过类中的final方法来重新设置对象的属性。
参考资料
《Effective Java 中文版 第2版》 第11条:谨慎地覆盖clone P46-52