clone()防止内存泄露

最近在复习课程到第三章时,在学习不变量时一个很重要的方面就是防止内存泄露。通常防止内存泄露有两种方式。

其一,就是使数据都是不可变类型;

其二,是进行防御式拷贝。

    在这里提到了clone()方法是得到原实例的一个拷贝,内容完全一样。但在对其中一个实例进行操作时不会对里一个产生干扰。现在看一下java的具体实现。

首先,使你自定义的类实现cloneable。在这里我编写的类名为student

public class Student implements Cloneable

之后实现其中的clone()方法

public Object clone() throws CloneNotSupportedException{
    return super.clone();
}

这时看上去已经完成,测试也会发现其中内容相同。但是有一个很重要的问题——引用。

当你自定义的类中所有属性都是基本数据类型,那么没问题,功能已经实现。但是如果你的属性中有可变数据类型,且并未实现clone(),那么测试时你会发现对其中一个实例的修改会影响到另一个,这不是我们想要的。那么这时就要进行深拷贝,将引用指向新的内存地址,将原来的内容复制。即对其中不符合数据类型,实现clone方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值