实现Cloneable接口有什么用处,既然它只是一个标记接口?
我可以在我的类中随时创建一个public Object clone()方法。那么Cloneable接口的实际目的是什么?
将 Cloneable
设计成一个标记接口是一个错误。
不过,它确实能够“启用”Object
类中的默认clone()
实现。如果你没有实现Cloneable
接口,那么调用super.clone()
会抛出一个CloneNotSupportedException
异常。
在javadoc中指定了它的目的。这是为了指定允许克隆此类型的对象。
如果您的类依赖于Object.clone()
方法提供的内置实现,则此标记接口可以启用逐字段克隆。(如果在不实现Cloneable
的对象上调用内置克隆方法,则会抛出CloneNotSupportedException
异常。)