gpt4 book ai didi

java多次反序列化同一个对象

转载 作者:行者123 更新时间:2023-11-29 05:48:18 25 4
gpt4 key购买 nike

我有一个关于 Java 序列化语义的问题:反序列化同一个对象两次实际上会在内存中创建两个实例吗?例如:

    ByteArrayOutputStream ba = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(ba);

LinkedListNode tail = new LinkedListNode(null);
LinkedListNode n1 = new LinkedListNode(tail);

oos.writeObject(n1);
oos.flush();

ByteArrayInputStream bi = new ByteArrayInputStream(ba.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bi);
LinkedListNode r1 = (Node)ois.readObject();

ByteArrayInputStream bi2 = new ByteArrayInputStream(ba.toByteArray());
ObjectInputStream ois2 = new ObjectInputStream(bi2);
LinkedListNode r2 = (Node)ois2.readObject();

System.out.println("r1 == r2 " + (r1 == r2)); // prints false
System.out.println("r1.next == r2.next " + (r1.next == r2.next)); // prints false

代码似乎暗示答案是肯定的。我想知道这种行为是否有意义?

最佳答案

是的,反序列化会创建对象的一个​​新实例,多次反序列化将创建多个实例 - 除非您重写反序列化方法并实现某种池化,请参阅 here例如

关于java多次反序列化同一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983390/

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