gpt4 book ai didi

java - 链式 Java 深度复制?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:48:35 25 4
gpt4 key购买 nike

我了解如何使用 Serializable 和 Streams 进行 Java 深度复制,但前提是要复制的对象只有原始数据类型。在我的例子中,我有一个父类,在原始数据类型中包含一个子类的 ArrayList,它们也需要被深度复制。

有人可以指出正确的方向吗?

更新:

我以为它在工作,但我发现它不是。

这就是我的。

public class Pack implements Serializable
{
String ID;
String serviceCode;
String name;
String type;
ArrayList<Service> services;
public Pack deepClone()
{
try
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(this);

ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
Pack clone = (Pack) ois.readObject();
clone.setID(null);
clone.setType("Replica");
return clone;
}
catch (IOException e)
{
return null;
}
catch (ClassNotFoundException e)
{
return null;
}
}
}


public class Service implements Serializable
{
String ID;
String serviceCode;
String name;
}

现在在克隆父类后得到一个很好的克隆,但服务数组为空。

更新:

对不起,我的错误,是 sleep 不足。它确实有效。

最佳答案

无论您是否具有原始数据类型,序列化都会完成。唯一的条件是您的子类也需要可序列化。

引用此处获取快速教程 java_serialization

关于java - 链式 Java 深度复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18022948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com