繁体   English   中英

关于接口可克隆

[英]About the interface Cloneable

例如,我们编写类XXX来实现Cloneable,并重写类XXX中的方法clone,是否有必要在该方法中调用super.clone?

几个重要的指针

  1. 可克隆是标记接口。 标记接口没有声明方法或变量。 他们只是告诉JVM此类具有执行某些功能的能力,例如可克隆,可序列化等。
  2. 当您说super.clone时,您不是从可克隆对象调用方法,实际上是在调用超类的clone()方法或默认情况下调用Object.clone();

如果您不希望自己实现,则可以使用Object的clone方法,但这将为您提供对象的浅表副本。 如果您想做更多的事情,最好给出自己的实现。

关于您的原始问题,不,如果您知道您的代码正在处理所有内容,则不是强制调用超级方法。 但是,如果您需要使用超类(在本例中为Object类)中的功能,则应调用超方法

是。 如果您不调用超类实现,则所需的任何数据都不会复制到新克隆中。

更新例如,超类可能希望将其私有变量复制到新克隆中。

实际的执行应该是

XXX clone =    super.clone();

// 'clone' now has all the data the super class wants to know.
// add any details from your XXX class to it here.

return clone;

*编辑好,我错了,这是super.clone()调用的内容:

http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#clone%28%29

你应该打电话给super.clone()

如果we override the method clone in the class XXX则无需调用super。 您只要在那里做就可以了。 -表示复制要复制的内容和方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM