什么是Java的反向引用?

前端之家收集整理的这篇文章主要介绍了什么是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)用于摆脱这种行为:它确保读取(写入)的对象将是唯一的(并且不会被重用作后向引用).这是相当先进的,我不记得曾见过或曾经使用过它,但话说回来,我很少看到序列化的使用.

猜你在找的Java相关文章