我有一个要克隆其对象的类。我通过实现 Cloneable 接口并覆盖 clone 方法来做到这一点。但是,如果我正在创建一个克隆方法,而没有实现 Cloneable 接口,则会引发异常。这个标记接口(可克隆)为我的班级提供了什么超能力?
问问题
530 次
2 回答
0
java中对象的克隆:
有Cloneable
界面。您可能希望该接口有一个 clone() 方法,该方法将返回对象的副本。但是,事实并非如此。Cloneable
只是一个标记界面。这意味着,它没有任何方法,它只是将类标记为适合克隆。该clone
方法存在于Object
类中。
于 2018-10-16T10:46:22.433 回答
0
它允许根据以下JavaDoc进行克隆Object.clone
:
首先,如果这个对象的类没有实现接口
Cloneable
,则CloneNotSupportedException
抛出a。
每次您致电时Object.clone()
,此要求都会得到验证。
JavaDoc本身Cloneable
说:
一个类实现该
Cloneable
接口以向该Object.clone()
方法指示该方法制作该类实例的逐个字段副本是合法的。在没有实现Cloneable
接口的实例上调用 Object 的 clone 方法会导致CloneNotSupportedException
抛出异常。
总结一下:
它是指定行为的一部分。在运行时不遵守此要求将是显而易见的。
于 2018-10-16T11:54:21.410 回答