Java 实现可克隆接口是如何允许对象克隆的,因为它是一个标记接口并且不';你没有办法吗?

Java 实现可克隆接口是如何允许对象克隆的,因为它是一个标记接口并且不';你没有办法吗?,java,clone,cloneable,marker-interfaces,Java,Clone,Cloneable,Marker Interfaces,我有一个类,我想克隆它的对象。我通过实现Cloneable接口和重写clone方法实现了这一点。但是,如果我正在创建一个克隆方法,而没有实现可克隆接口,它就会抛出一个异常。 这个标记接口(Cloneable)为我的类提供了什么超级功能?在java中克隆对象: 有Cloneable界面。您希望该接口具有clone()方法,该方法将返回对象的副本。但事实并非如此Cloneable只是一个标记接口。这意味着,它没有任何方法,只是将类标记为适合克隆。克隆方法出现在对象类上。它允许根据对象的类型进行克隆。

我有一个类,我想克隆它的对象。我通过实现Cloneable接口和重写clone方法实现了这一点。但是,如果我正在创建一个克隆方法,而没有实现可克隆接口,它就会抛出一个异常。
这个标记接口(Cloneable)为我的类提供了什么超级功能?

在java中克隆对象:


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

它允许根据
对象的类型进行克隆。克隆

首先,如果这个对象的类没有实现接口
Cloneable
,然后抛出
CloneNotSupportedException

每次调用
Object.clone()
都会验证此要求

可克隆的本身说明:

类实现了
Cloneable
接口来指示
Object.clone()
method声明该方法进行复制是合法的 该类实例的逐字段副本。调用对象的 在未实现可克隆的
实例上克隆方法
接口导致异常
CloneNotSupportedException
被删除 扔

总结一下:

这是指定行为的一部分。不符合此要求将在运行时被拒绝。

同样的方式
Serializable
将对象写入磁盘,尽管它是一个标记接口。重复说明了实现
Cloneable
的工作原理。接口只是告诉本机的
Object.clone
方法,“嘿,你可以克隆我”。如果没有接口,该方法将拒绝克隆对象(通过引发异常)。正如Elliot所提到的,这与使用
Serializable
的方式类似。