0

我有一个要克隆其对象的类。我通过实现 Cloneable 接口并覆盖 clone 方法来做到这一点。但是,如果我正在创建一个克隆方法,而没有实现 Cloneable 接口,则会引发异常。这个标记接口(可克隆)为我的班级提供了什么超能力?

4

2 回答 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 回答