我尝试为Java中的对象创建一个深度复制函数,但我希望它是泛型的,这样它就可以为任何对象工作,而不仅仅是一个特定的类。我目前的实现使用序列化来创建深度复制,但感觉很笨拙和不优雅:
public static <T> T deepCopy(T object) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(object);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
return (T) ois.readObject();
}
有没有更直接的方法在Java中实现一个既高效又灵活的深度复制函数?
1条答案
按热度按时间kgsdhlau1#
不,没有。深度序列化就像它得到的那样好和通用。
(理想情况下,使用良好的不变性实践设计的代码应该不需要浅拷贝或深拷贝。我已经很多年没有写过拷贝函数了。)