import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
* Description: 使用这个方法,你可以实现深度克隆任何具有序列化接口的对象
*/
public class DeepCloneUtils implements Serializable {
public static <T extends Serializable> T deepClone(T object) {
if (object == null) {
return null;
}
try {
// 将对象写入到字节数组输出流中
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(object);
objectOutputStream.flush();
objectOutputStream.close();
// 从字节数组输入流中读取对象
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
@SuppressWarnings("unchecked")
T clonedObject = (T) objectInputStream.readObject();
objectInputStream.close();
return clonedObject;
} catch (IOException | ClassNotFoundException e) {
throw new RuntimeException("Failed to deep clone object", e);
}
}
}
深拷贝工具类
于 2023-12-29 11:39:37 首次发布