第六章 clone

使用场景:复制当前类,但新类状态的改变不影响原类时
protected Object clone()[java.lang.Object]
clone在进行时只能是[b]一个字段一个字段的复制[/b]。
对于只包含不可变字段(String,primitive类型)的类, shallow clone[浅拷贝]是可行的,
但是当当前类包含指向其他类的引用时(eg. Date类型),须进行deep clone[深拷贝],因为此时,当前类和克隆的新类都包含指向同一类内存的引用类型,对当前类或克隆类的改变都会影响彼此。

在进行克隆时要考虑:
当前类是否只包含不可变的字段,是则只需重写默认的clone方法[拓展protected 为public],否则要对引用字段进行克隆
1.implements Cloneable接口
2.重写默认的clone方法【拓展protected 为public(不知作者为什么在这里特别指出非得将protected拓展为public,感觉均可)】

public class Employee implements Cloneable{
private String name;
private double salary;
private Date hireDay;

public Employee clone() throws CloneNotSupportedException {
//call Object.clone()
Employee cloned = (Employee)super.clone();
//cloned.hireDay = (Date) hireDay.clone();
return cloned;
}
...
...
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值