什么是Java的反向引用?

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

我在这里遇到了这个词

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)用于摆脱这种行为:它确保读取(写入)的对象将是唯一的(并且不会被重用作后向引用).这是相当先进的,我不记得曾见过或曾经使用过它,但话说回来,我很少看到序列化的使用.

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...