浅复制:实现cloneable接口,适用于类成员是值的情况。如果类成员是对象,那么此成员对象类也必须实现复制过程。否则不能实现成员类对象的复制。
深复制:内存复制,两种方法:
1. 自己写代码,以前就这么干的。。
public static <T> T deepCopy(T src) throws IOException, ClassNotFoundException {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(src);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
@SuppressWarnings("unchecked")
T dest = (T) in.readObject();
return dest;
}
2.直接使用工具类
org.apache.commons.lang3.SerializationUtils
具体实现过程看源码吧。
不是代码不好写,是因为我们不知道还有捷径ORZ..