Cloneable接口实现原理

Cloneable接口是Java开发中常用的一个接口,它的作用是使一个类的实例能够将自身拷贝到另一个新的实例当中。

在开发过程中,如果一个类中的字段比较多,而我们如果采用在客户端中逐字段复制的方法来进行拷贝操作的话,将不可避免的造成客户端代码繁杂,而且也无法对类中的私有对象进行复制,而如果让需要具备拷贝功能的类实现Cloneable接口,并重写clone()方法的方式来简洁地实现实例拷贝功能。

代码分析

private class Demo implements Cloneable{}
我们创建一个Demo类,并让他实现Cloneable接口。

1
2
public interface Cloneable {
}

然后我们发现Cloneable几口里面并没有定义任何接口方法。
这是因为在Object类中已经将clone()方法定义为所有类都应该具有的基本功能,只是将该方法声明为了protected类型。它是一个native本地方法。

如果一个类不实现该接口就直接调用clone()方法的话,就会抛出“不支持拷贝”异常。
所以如果要让一个类具有拷贝实例的功能,那么除了要重写Object类中clone()方法外,还必须实现Cloneable接口。