Java对象克隆

Java对象克隆

java对象克隆就是相当于将一个对象复制一份给新的对象变量。
克隆必须实现Cloneable接口并且实现clone方法。
Java克隆可以分为浅克隆和深克隆两种。

1.浅克隆

什么是浅克隆呢,我们用具体的实例进行展示:
实例如下:
1.先创建一个Dog类,实现Cloneable接口,并实现clone方法。

public class Dog extends Animal implements Cloneable{
	
	@Override
	protected Object clone() throws CloneNotSupportedException {
		// TODO Auto-generated method stub
		return super.clone();
	}

	private Date date;
	
	//狗的名字
	private String name;

}

在测试类中,创建一个dog对象,另一个dog2对象变量对dog变量进行克隆。:

Dog dog = new Dog();

try {
	Dog dog2 = (Dog)dog.clone();
} catch (CloneNotSupportedException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}		

那么dog2与dog对象变量引用的对象变量在内容上是一致的,当并不是一个,两个对象改变其中的变量是不相互影响的。
如图所示:
在这里插入图片描述

上图可以看出,浅克隆是有缺点的,虽然说两个对象变量来引用的是两个不相关的对象,但是在这两个对象变量中的引用类型的属性引用的却还是一致的(当然如果引用的是Spring这样不可变的引用就不必担心由此带来的危险)。所以就有了深克隆。

2.深克隆

深克隆简单来说就是在浅克隆的基础上将可改变的引用属相的值在进行一次克隆。
进行改变后的代码如下:

public class Dog extends Animal implements Cloneable{
	
	@Override
	protected Object clone() throws CloneNotSupportedException {
		// TODO Auto-generated method stub
		//先对整体进行克隆
		Dog dog = (Dog)super.clone();
		//对其中一部分的属相进行克隆
		dog.date = (Date)date.clone();
		return dog;
	}

	private Date date;
	
	//狗的名字
	private String name;

}

当然还有一些方法可以进行深克隆,目前先介绍最简单的方法,如果以后学习的更加的深入,会在来补充的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值