在Java中,要實現對象的clone功能,你需要讓你的類實現Cloneable
接口,并重寫Object
類中的clone()
方法。下面是一個簡單的示例:
Cloneable
接口:public class MyClass implements Cloneable {
// 類的屬性和方法
}
public class MyClass implements Cloneable {
private int myInt;
private String myString;
// 構造方法、getter和setter方法
}
clone()
方法:public class MyClass implements Cloneable {
// ...類的屬性和方法
@Override
public MyClass clone() throws CloneNotSupportedException {
return (MyClass) super.clone();
}
}
clone()
方法創建對象的副本:public class Main {
public static void main(String[] args) {
try {
MyClass obj1 = new MyClass();
obj1.setMyInt(42);
obj1.setMyString("Hello, World!");
MyClass obj2 = obj1.clone();
System.out.println("obj1: myInt = " + obj1.getMyInt() + ", myString = " + obj1.getMyString());
System.out.println("obj2: myInt = " + obj2.getMyInt() + ", myString = " + obj2.getMyString());
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
注意:當你重寫clone()
方法時,需要使用super.clone()
來調用父類的clone()
方法。此外,clone()
方法會創建一個淺拷貝(shallow copy),這意味著如果類中有引用類型的屬性,那么副本和原始對象將共享這些引用類型的屬性。如果你需要創建一個深拷貝(deep copy),則需要手動復制這些引用類型的屬性。