编程语言
首页 > 编程语言> > java – 为什么clone()方法保存在Object中?

java – 为什么clone()方法保存在Object中?

作者:互联网

如果类不是Cloneable,则不能克隆此类的对象.那么为什么clone()保存在Object类中而不是Cloneable接口中呢?

解决方法:

这是Java中的设计错误(是的,Java并不完美!).

最好避免使用Java进行克隆.例如,Josh Bloch在Effective Java第11项中指出:

The Cloneable interface was intended as a mixin interface (Item 18)
for objects to advertise that they permit cloning. Unfortunately, it
fails to serve this purpose. Its primary flaw is that it lacks a clone
method, and Object’s clone method is protected. You cannot, without
resorting to reflection (Item 53), invoke the clone method on an
object merely because it implements Cloneable. Even a reflective
invocation may fail, as there is no guarantee that the object has an
accessible clone method. Despite this flaw and others, the facility is
in wide use so it pays to understand it.

如果希望对象可克隆,请实现复制构造函数或复制方法.

标签:java,cloneable
来源: https://codeday.me/bug/20190704/1379423.html