clone分为两种,一种是浅克隆,一种是深度克隆,深度克隆可以有两种实现形式,一种时重写clone方法,还有一种是用数据流的方式进行克隆,因为克隆的本质也是底层二进制的克隆
1.
public class Fks(){
public int whells;
public String color;
public ArrayList<String> list=new ArrayList<String>();
//get 和 set 注入函数省略
public Fks clone(){
Fks fksClone=null;
fksClone=(Fks)super.clone; //这句代码和下面的代码不能交换位置,即不能先对对象字段克隆在对对象进行克隆
this.list=this.list.clone; //因为要想深度克隆,就需要对非基本数据类型(String除外)进行单独的克隆处理
return fksClone;
}
}
2
public Object deepCopy(Object src)(){
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(src);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
Object dest = in.readObject();
return dest;
}
3有一种设计模式用到了深度克隆,就是原型模式,
原型模式的定义:用原型实例指定创建的对象种类,并且通过拷贝这些原型对象创建新的对象 --摘录设计模式之禅(第2版)
904

被折叠的 条评论
为什么被折叠?



