Java提供了一個protected修飾的clone()方法,該方法用於幫助其他對象實現自我克隆,就是得到一個當前對象的副本,而且二者之間完全隔離。
克隆步驟如下:
1.實現Cloneable接口,這是一個標誌性的接口,實現該接口的對象可以實現自我克隆,接口裏沒有定義任何方法。
2.通過super.clone()實現clone()方法,調用Object實現的clone()方法來得到該對象的副本,並返回該副本。
以下程序示範自我克隆:
public class Address {
String detail;
public Address(String detail)
{
this.detail=detail;
}
}
//實現Cloneable接口
public class User implements Cloneable {
int age;
Address address;
public User(int age)
{
this.age=age;
address=new Address("以色列");
}
public User clone()throws CloneNotSupportedException
{
return (User)super.clone();//通過super.clone()實現clone()方法
}
}
public class CloneTest {
public static void main(String[] args) throws CloneNotSupportedException{
User u1=new User(29);
User u2=u1.clone();//克隆得到u1的副本
System.out.println(u1==u2);//false
System.out.println(u1.address==u2.address);//true
}
}
這只是一種淺克隆,只克隆對象的所有Field值,不會對引用類型的Field進行克隆。