1

我正在阅读 它说在clone第一个要调用的方法中必须是 在这种情况下,我想最终我们最终会调用of向上层级链。 但我认为该对象的克隆没有做任何事情。 查看我看到的代码:并且没有实现。 但是从段落看来,如果一个类只有原始字段调用就足以创建一个克隆。 但是怎么做?属于. Effective Java
clonesuper.clone()
clonejava.lang.Object


protected native Object clone() throws CloneNotSupportedException;

(ClassX) super.clone()
super.cloneObject

4

3 回答 3

3

对象中的这个声明

  protected native Object clone() throws CloneNotSupportedException;

... 表示该clone方法是在本机代码中实现的;即幕后有魔法。

您可以放心,Object.clone()实际上确实做了一些事情……前提是您已将您的类声明为正在实现Cloneable。但是它所做的事情不能用普通的 Java 来表达。

于 2012-05-02T06:50:36.343 回答
2

clone() 是 Java 中用于对象复制的方法。在 Java 中,对象是通过引用变量来操作的,并且没有用于复制对象的操作符——赋值操作符复制的是引用,而不是对象。clone() 方法提供了这个缺失的功能。

于 2012-05-02T06:30:24.863 回答
1

没错,当你克隆一个对象时,你应该总是调用super.clone()(作为第一条语句),然后手动克隆你的对象的其余部分,这是因为当你克隆一个对象时,你必须确保超类的部分对象也以正确的方式克隆......

如果一个对象不支持它抛出的克隆CloneNotSupportedException,这意味着如果你尝试克隆一个超级对象并且你得到了异常,你也不能在你的子类型中实现克隆对象,并且不能克隆对象......那里禁止对象克隆操作是正确的几种情况。

于 2012-05-02T06:37:04.517 回答