java中可克隆接口的用途是什么?

实现可克隆接口有什么用,因为它是一个标记接口?

我总是可以在我的类中创建一个公共Object clone()方法。 可克隆接口的实际目的是什么?

这是因为如果您的对象不是Cloneableclone()方法会抛出CloneNotSupportedException

您应该查看clone()方法的文档 。

以下是在Object类中声明clone()方法的方法:

 protected Object clone() throws CloneNotSupportedException 

注意:

此外,人们已经意识到Clone已经崩溃了。 这里的答案解释了为什么以及如何避免使用它。

使Cloneable成为标记接口是一个错误。

也就是说,它所做的一件事是“启用” Objectclone()的默认实现。 如果您没有implement Cloneable那么调用super.clone()将抛出CloneNotSupportedException

有人说这是尝试从C ++模仿复制构造函数,但这是关于它的StackOverflow上的类似问题: 关于Java cloneable

clone()方法的目的是创建一个调用它的对象的新实例(副本)。 正如您在使用克隆方法的答案中所看到的,您的类应该实现Cloneable接口。 您可以选择实现克隆的方式,您可以为您的类做浅或深拷贝。 您可以查看示例http://javapapers.com/core-java/java-clone-shallow-copy-and-deep-copy/ 。

目的在javadoc中指定。 它指定允许克隆此类对象。

如果您的类依赖于clone()的内置实现(由Object.clone()方法提供),那么此标记接口将启用逐字段克隆。 (如果在未实现Cloneable的对象上调用内置克隆方法,则会出现CloneNotSupportedException 。)