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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值