java浅克隆

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进行克隆。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章