如何在Java中实现对象的通用深层复制函数

nfg76nw0  于 2023-01-16  发布在  Java
关注(0)|答案(1)|浏览(123)

我尝试为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中实现一个既高效又灵活的深度复制函数?

kgsdhlau

kgsdhlau1#

不,没有。深度序列化就像它得到的那样好和通用。
(理想情况下,使用良好的不变性实践设计的代码应该不需要浅拷贝或深拷贝。我已经很多年没有写过拷贝函数了。)

相关问题