在Java中,Cloneable接口是一個標記接口,它沒有任何方法。要使用Cloneable接口,只需要在要克隆的類上實現該接口即可。
下面是實現Cloneable接口并進行克隆的示例代碼:
public class MyClass implements Cloneable {
private int data;
public MyClass(int data) {
this.data = data;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String[] args) {
MyClass original = new MyClass(10);
try {
MyClass cloned = (MyClass) original.clone();
cloned.setData(20);
System.out.println("Original data: " + original.getData());
System.out.println("Cloned data: " + cloned.getData());
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
在這個示例中,MyClass實現了Cloneable接口,并重寫了clone()方法。在main()方法中,我們先創建一個原始對象original,然后通過調用clone()方法創建一個克隆對象cloned。我們還可以修改克隆對象的數據,而不會影響原始對象。最后,我們輸出原始對象和克隆對象的數據,可以看到它們分別是10和20。
需要注意的是,實現Cloneable接口并不會自動實現對象的深克隆,只會進行淺克隆。要實現深克隆,需要在clone()方法中進一步處理對象中的引用類型。