加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

什么是Java的反向引用?

发布时间:2020-12-14 05:54:45 所属栏目:Java 来源:网络整理
导读:特别是在ObjectInputStream的readUnshared()方法的上下文中, “反向引用”是什么意思? 我在这里遇到了这个词 If readUnshared is called to deserialize a back-reference (the stream representation of an object which has been written previously to t
特别是在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)用于摆脱这种行为:它确保读取(写入)的对象将是唯一的(并且不会被重用作后向引用).这是相当先进的,我不记得曾见过或曾经使用过它,但话说回来,我很少看到序列化的使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读