实现可克隆接口有什么用,因为它是标记接口?
我总是可以在我的类中创建一个公共 Object clone() 方法。可克隆接口的实际目的是什么?
制作Cloneable
标记界面是一个错误。
也就是说,它所做的一件事是“启用” clone()
in的默认实现Object
。如果你不这样做,implement Cloneable
那么调用super.clone()
将抛出一个CloneNotSupportedException
.
有人说这是从 C++ 中模仿复制构造函数的尝试,但这是 StackOverflow 上关于它的先前类似问题:About Java cloneable
目的在javadoc中指定。它是指定允许克隆这种类型的对象。
clone()
如果您的类依赖于(由方法提供)的内置实现Object.clone()
,则此标记接口启用逐字段克隆。(如果你在一个没有实现的对象上调用内置的 clone 方法Cloneable
,你会得到一个CloneNotSupportedException
。)
clone() 方法的目的是创建调用它的对象的新实例(副本)。正如您在使用克隆方法的答案中看到的那样,您的类应该实现 Cloneable 接口。你可以选择如何实现 clone ,你可以为你的班级做浅拷贝或深拷贝。您可以查看示例http://javapapers.com/core-java/java-clone-shallow-copy-and-deep-copy/。