什么是使用实施可复制的接口,因为它是一个标记接口呢?
我总能在我的类中的公共对象的clone()方法。 什么是可复制的接口的实际目的是什么?
什么是使用实施可复制的接口,因为它是一个标记接口呢?
我总能在我的类中的公共对象的clone()方法。 什么是可复制的接口的实际目的是什么?
这是因为clone()
方法抛出CloneNotSupportedException
,如果你的对象不是Cloneable
。
你应该看看在对文件clone()
方法。
以下是怎样clone()
方法是在类中声明Object
:
protected Object clone() throws CloneNotSupportedException
注意:
此外,它已经意识到, Clone
是破碎。 这个答案在这里SO解释了为什么以及如何避免使用它。
制作Cloneable
一个标记接口是一个错误。
这就是说,一方面它是“使能”的默认实现clone()
的Object
。 如果不implement Cloneable
然后调用super.clone()
将抛出一个CloneNotSupportedException
。
有人说这是从C ++模仿拷贝构造函数的尝试,但在这里是关于它在计算器上以前类似的问题: 关于Java的可复制
clone()方法的目的是创建调用它的对象的一个新实例(副本)。 如您在使用克隆方法的答案看你的类应该实现了Cloneable接口。 您可以选择如何实现克隆,你能为你做的类浅或深的副本。 你可以看到的例子http://javapapers.com/core-java/java-clone-shallow-copy-and-deep-copy/ 。
其目的是在指定的javadoc 。 它是指定此类型的对象的克隆是允许的。
如果你的类依赖于内置的实施clone()
由提供Object.clone()
方法),那么这个标记接口使现场逐场克隆。 (如果你调用内置的对象上的克隆方法没有实现Cloneable
,你会得到一个CloneNotSupportedException
。)