//序列化方法实现深拷贝
ByteArrayOutputStream bos=new ByteArrayOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(bos);
oos.writeObject(stu1);
oos.flush();
ObjectInputStream ois=new ObjectInputStream(new
ByteArrayInputStream(bos.toByteArray()));
Student stu2=(Student)ois.readObject();
1. 关于浅拷贝
成员都是复制引用,而自身则是一个新的对象,就是“新壶装旧酒”。
可以看看Object类里关于clone方法的注释。
2. 关于深拷贝
深拷贝里还是回调用父类的clone方法,这是为啥呢,个人觉得这是一种讨巧的方法。两个原因:一是因为实际上的深拷贝是最终会落地到基础类型,而我们所说的深拷贝就不是真正意义上的深拷贝。既然如此,调用了super.clone方法后,对于部分只需要复制引用的成员变量我们就不用管了。二是因为如果成员变量很多,我们得一个一个写还可能忘了,所以如此。