我有一个要克隆其对象的类。我通过实现Cloneable接口并覆盖clone方法来做到这一点。但是,如果我创建一个克隆方法而没有实现Cloneable接口,它将抛出异常。 这种Marker Interface(可克隆)为我的班级提供了什么超级力量?
答案 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
异常 抛出。
总结:
这是指定行为的一部分。在运行时,不遵守此要求将变得很无聊。