Java不提供克隆(复制)对象的自动机制。克隆对象意味着逐位复制对象的内容。要支持克隆操作,请在类中实现clone()
方法。Object
类中的clone()
方法的声明如下:
1
|
protected Object clone() throws CloneNotSupportedException |
clone()
方法声明为protected
。 因此,不能从客户端代码调用它。以下代码无效:
1
2
|
Object obj = new Object(); Object clone = obj.clone(); // Error. Cannot access protected clone() method |
需要在类中声明clone()
方法为public
来克隆类的对象。
它的返回类型是Object
。 这意味着将需要使用clone()
方法转换返回值。
假设MyClass
是可克隆的。 克隆代码将如下所示
1
2
|
MyClass mc = new MyClass(); MyClass clone = (MyClass)mc.clone(); // Need to use a cast |
Object
类中的clone()
方法会抛出CloneNotSupportedException
。要调用clone()
方法,需要将调用放在try-catch
块中,或者重新抛出异常。