Cloneable的用法
1、如果需要对象能被克隆,则该类要继承Cloneable接口。
2、在类里重写Object的clone方法。
3、clone方法默认实现的是浅复制,也就是只是给新对象复制了源对象的引用,并不是复制值。
4、所以需要自己定义一个方法,把对象的属性逐条复制,这才是深复制。
以下为实例代码:
/**
* 以下代码是在一个类里面
*/
//重写Clone方法
@Override
public Object clone() throws CloneNotSuppoertedException{
return deepClone();
}
//自己定义一个深度复制对象的方法
private Monster deepClone() throws CloneNotSuppoertedException{
Monster cloneMonster = (Monster)super.clone();//先进行浅复制
cloneMonster.createTime = (Date)createTime.clone();
cloneMonster.skills =skills.clone();
cloneMonster.name = new String(name);
return cloneMonster;
}