7

如果我想要可克隆的类,为什么我必须覆盖克隆?所有类都扩展自Object,那么为什么我必须重写 Object 克隆方法?为什么我不能只调用原始的 Object 克隆方法?

4

2 回答 2

8

这是 JDK 中的众多“设计缺陷”之一。

Clonable应该是一个clone()方法的接口,但它是一个标记接口,并且Object有一个“什么都不做”的clone()方法实现......你留下了你的问题。


如果您有兴趣,此答案列出了 java 中的其他一些“错误”。

于 2013-03-18T12:52:35.377 回答
1

见这里: http ://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Cloneable.html

在未实现 Cloneable 接口的实例上调用 Object 的 clone 方法会导致抛出异常 CloneNotSupportedException。

另外我想这个讨论会对你有所帮助: Confusion about cloneable interface and object.clone() in java

于 2013-03-18T13:01:03.670 回答