Java中List的深拷贝
诸如对List<JavaBean>对象进行深拷贝时,可以使用
private static <T> List<T> deepCopy(List<T> src) throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(src); // src 被写到oos
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
List<T> dest = (List<T>) ois.readObject();
return dest;
}
而其他的很多中方法,比如
- 使用ArrayList构造函数
- 对src进行遍历
等都是浅拷贝。
参考
https://my.oschina.net/u/3916545/blog/1865820/