知识卡片
Cloneable只是标记接口需覆写clone才真正可拷贝
内容
[[原型模式用对象复制替代new解决并发共享冲突]]的技术基础是Cloneable接口,但它一个方法 都没有,只是标记——真正让拷贝生效还需覆写Object的clone()方法。通用实现:类实现 Cloneable,clone()内部调用super.clone()并强制类型转换返回。发散:Cloneable”接口无 方法、仅作能力标记”的设计不常见,把是否允许被拷贝的决策交给类的作者。
参考来源
- 位置:《设计模式之禅(第2版)》第13章《原型模式》(源文件:_epub-src/text/part0058.html)
- 结论依据:原文明确"翻开JDK的帮助看看Cloneable是一个方法都没有的,这个接口只是一个标记作用……那怎么才能从'有可能被拷贝'转换为'可以被拷贝'呢?方法是覆盖clone()方法",并给出实现Cloneable、覆写clone调用super.clone()的通用源码。
- 原始内容:Cloneable是一个方法都没有的,这个接口只是一个标记作用,在JVM中具有这个标记的对象才有可能被拷贝……方法是覆盖clone()方法……实现一个接口,然后重写clone方法,就完成了原型模式!