【Java】【实践技巧】【集合深度拷贝与对象深度克隆】
1.集合拷贝
public static <T> List<T> deepCopy(List<T> src) {
try (ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream outputStream = new ObjectOutputStream(byteOut);
) {
outputStream.writeObject(src);
try (ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream inputStream = new ObjectInputStream(byteIn);
) {
return (List<T>) inputStream.readObject();
}
} catch (Exception e) {
ThrowableUtils.getString(e);
}
return Collections.emptyList();
}
2.对象拷贝
public static <T> T deepCopyObject(T src) {
try (ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream outputStream = new ObjectOutputStream(byteOut)) {
outputStream.writeObject(src);
try (ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream inputStream = new ObjectInputStream(byteIn)) {
return (T) inputStream.readObject();
}
}
catch (Exception e) {
e.printStackTrace();
}
return null;
}