我正在阅读
它说在clone
第一个要调用的方法中必须是
在这种情况下,我想最终我们最终会调用of向上层级链。
但我认为该对象的克隆没有做任何事情。
查看我看到的代码:并且没有实现。
但是从段落看来,如果一个类只有原始字段调用就足以创建一个克隆。
但是怎么做?属于. Effective Java
clone
super.clone()
clone
java.lang.Object
protected native Object clone() throws CloneNotSupportedException;
(ClassX) super.clone()
super.clone
Object
问问题
1782 次
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 回答