Cloneable接口是Java开发中常用的一个接口,它的作用是使一个类的实例能够将自身拷贝到另一个新的实例当中。
在开发过程中,如果一个类中的字段比较多,而我们如果采用在客户端中逐字段复制的方法来进行拷贝操作的话,将不可避免的造成客户端代码繁杂,而且也无法对类中的私有对象进行复制,而如果让需要具备拷贝功能的类实现Cloneable
接口,并重写clone()
方法的方式来简洁地实现实例拷贝功能。
代码分析
private class Demo implements Cloneable{}
我们创建一个Demo类,并让他实现Cloneable接口。1
2public interface Cloneable {
}
然后我们发现Cloneable
几口里面并没有定义任何接口方法。
这是因为在Object
类中已经将clone()
方法定义为所有类都应该具有的基本功能,只是将该方法声明为了protected
类型。它是一个native
本地方法。
如果一个类不实现该接口就直接调用clone()
方法的话,就会抛出“不支持拷贝”异常。
所以如果要让一个类具有拷贝实例的功能,那么除了要重写Object
类中clone()
方法外,还必须实现Cloneable接口。