Java 超级';克隆人是干什么的?
我正在从Java 超级';克隆人是干什么的?,java,Java,我正在从effectivejava 它表示在clone中,第一个要调用的方法必须是super.clone() 在这种情况下,我想最终我们会调用java.lang.Object的clone,并将其提升到层次结构链上。 但我认为该对象的克隆没有任何作用。 查看我看到的代码: protected native Object clone()抛出CloneNotSupportedException并且没有实现。 但是从这一段来看,如果一个类只有调用 (ClassX)super.clone()足以创建克隆。
effectivejava
它表示在
clone
中,第一个要调用的方法必须是super.clone()
在这种情况下,我想最终我们会调用
java.lang.Object
的clone
,并将其提升到层次结构链上。但我认为该对象的克隆没有任何作用。
查看我看到的代码:
protected native Object clone()抛出CloneNotSupportedException代码>并且没有实现。
但是从这一段来看,如果一个类只有调用
(ClassX)super.clone()
足以创建克隆。
但是怎么做呢super.clone
属于对象
clone()是Java中用于对象复制的方法。在Java中,对象是通过引用变量操作的,没有用于复制对象的操作符赋值操作符复制引用,而不是对象。clone()方法提供了缺少的功能。clone()是Java中用于对象复制的方法。在Java中,对象是通过引用变量操作的,没有用于复制对象的操作符赋值操作符复制引用,而不是对象。clone()方法提供了这个缺少的功能。没错,当你克隆一个对象时,你应该总是调用super.clone()
(作为第一句话),然后手动克隆对象的其余部分,这是因为当你克隆一个对象时,你必须确保对象的超类部分也以正确的方式得到克隆
如果一个对象不支持克隆,它会抛出CloneNotSupportedException
,这意味着如果您尝试克隆一个超级对象,但得到了异常,则无法在子类型中实现克隆对象,并且无法克隆该对象。。。有几种情况下禁止对象克隆操作是正确的。是正确的,克隆对象时,应始终调用super.clone()
(作为第一条语句),然后手动克隆对象的其余部分,这是因为当你克隆一个对象时,你必须确保对象的超类部分也以正确的方式得到克隆
如果一个对象不支持克隆,它会抛出CloneNotSupportedException
,这意味着如果您尝试克隆一个超级对象,但得到了异常,则无法在子类型中实现克隆对象,并且无法克隆该对象。。。有几种情况下禁止对象克隆操作是正确的。对象中的此声明
protected native Object clone() throws CloneNotSupportedException;
。。。表示克隆
方法在本机代码中实现;i、 幕布后面正在上演魔术
您可以确信,Object.clone()
确实做了一些事情。。。前提是您已将类声明为实现Cloneable
。但它的作用不能用普通Java来表示。此声明在对象中
protected native Object clone() throws CloneNotSupportedException;
。。。表示克隆
方法在本机代码中实现;i、 幕布后面正在上演魔术
您可以确信,Object.clone()
确实做了一些事情。。。前提是您已将类声明为实现Cloneable
。但是它的功能不能用普通的Java来表达。这本书还应该说,使用clone()不是一个好主意。。。。您遇到的问题是,您必须依赖于正确实现该方法的超类,否则您将陷入麻烦。要正确克隆对象,必须复制所有字段(如果文件是基本的,那么它们显然是不可变的,因此可以使用=而不是克隆来复制引用,就像复制任何不可变对象一样)。请尝试复制构造函数或静态工厂方法,而不是使用克隆。更好。Object#clone
作为本机方法实现。看这本书还应该说,使用clone()不是一个好主意。。。。您遇到的问题是,您必须依赖于正确实现该方法的超类,否则您将陷入麻烦。要正确克隆对象,必须复制所有字段(如果文件是基本的,那么它们显然是不可变的,因此可以使用=而不是克隆来复制引用,就像复制任何不可变对象一样)。请尝试复制构造函数或静态工厂方法,而不是使用克隆。更好。Object#clone
作为本机方法实现。看到了吗,它对基本类型有效?也就是说,是否有类似于memcopy
?它有点像memcopy。它在底层复制所有字段,以及对象头中的一些隐藏信息。那么它适用于基本类型吗?也就是说,是否有类似于memcopy
?它有点像memcopy。它对所有字段和对象标题中的一些隐藏信息进行低级复制。