gpt4 book ai didi

java - 什么是 Java 中的反向引用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:10 26 4
gpt4 key购买 nike

特别是在 ObjectInputStreamreadUnshared() 方法的上下文中,“反向引用”是什么意思?

我在这个词中遇到了这个词

If readUnshared is called to deserialize a back-reference (the stream representation of an object which has been written previously to the stream), an ObjectStreamException will be thrown.

引用:https://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#readUnshared()

最佳答案

当您使用 ObjectOutputStream 序列化对象时,流将“记住”它已经写入的对象。当它必须再次写入同一个对象时,它不会再次写入整个对象,而是写入一个称为“后向引用”的标识符。

接收方 ObjectInputStream 还将跟踪已接收到的对象,并且在读取反向引用时将返回它之前读取的同一对象。

answer by CoronA 中所述,除其他外,这用于序列化指向彼此的对象,而且还用于确保在序列化到另一个 JVM 时保留一个 JVM 中的身份相等性。

方法readUnshared(及其对应部分writeUnshared)用于摆脱这种行为:它确保读取(写入)的对象是唯一的(并且不作为反向引用重用)。这是相当高级的,我不记得曾经见过或使用过它,但话又说回来,我很少看到序列化的用法。

关于java - 什么是 Java 中的反向引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39696590/

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