实现Cloneable接口是如何实现对象克隆的,因为它是Marker接口并且没有任何方法?

时间:2018-10-16 10:29:24

标签: java clone cloneable marker-interfaces

我有一个要克隆其对象的类。我通过实现Cloneable接口并覆盖clone方法来做到这一点。但是,如果我创建一个克隆方法而没有实现Cloneable接口,它将抛出异常。 这种Marker Interface(可克隆)为我的班级提供了什么超级力量?

2 个答案:

答案 0 :(得分:1)

在Java中克隆对象:

有一个Cloneable界面。您可能希望接口具有clone()方法,该方法将返回对象的副本。但是,事实并非如此。 Cloneable只是一个标记界面。这意味着,它没有任何方法,只是将类标记为适合克隆。 clone类中提供了Object方法。

答案 1 :(得分:0)

它允许根据Object.clone的{​​{3}}进行克隆:

  

首先,如果此对象的类未实现接口   Cloneable,然后抛出CloneNotSupportedException

每次您致电Object.clone()时,这个要求就会得到验证。

Cloneable的{​​{3}}本身说:

  

一个类实现Cloneable接口以指示   Object.clone()方法,认为该方法合法   该类实例的字段间复制。调用对象的   未实现Cloneable的实例上的clone方法   界面导致出现CloneNotSupportedException异常   抛出。

总结:
这是指定行为的一部分。在运行时,不遵守此要求将变得很无聊。