在自行序列化的时,在自行序列化的类中重写的方法writeObject和readObject方法是怎么被调用的,程序中也没有用该类对象调用这两个方法啊?具体的逻辑是怎样的呢,是自行就被调用了吗?

来源:6-2 transient及ArrayList源码分析

张禹专

2017-09-18 23:54

在自行序列化的时,在自行序列化的类中重写的方法writeObject和readObject方法是怎么被调用的,程序中也没有用该类对象调用这两个方法啊?具体的逻辑是怎样的呢,是自行就被调用了吗?

写回答 关注

5回答

  • 64946
    2017-09-26 21:03:58
    已采纳

    方法括号里有 java.io.ObjectOutputStream s

    Mockin... 回复pcshao

    666

    2018-05-20 22:10:44

    共 6 条回复 >

  • 慕移动9181930
    2022-03-26 23:07:23

    亲~答案是没有问题的哦~您可能对if...elseif...else的逻辑运算没有看清楚哦~可以仔细阅读一下我们知识内容部分的讲解哦~

  • 黑白灰菌
    2018-12-14 00:07:23

    随随便便就给别人最佳回答?你自己搞懂了?


    因为这是规定:

    在序列化过程中,如果被序列化的类中定义了writeObject 和 readObject 方法,虚拟机会试图调用对象类里的 writeObject 和 readObject 方法,进行用户自定义的序列化和反序列化。

    如果没有这样的方法,则默认调用是 ObjectOutputStream 的 defaultWriteObject 方法以及 ObjectInputStream 的 defaultReadObject 方法。

    用户自定义的 writeObject 和 readObject 方法可以允许用户控制序列化的过程,比如可以在序列化的过程中动态改变序列化的数值。


    具体看这篇文章:http://www.hollischuang.com/archives/1140


  • 张禹专
    2017-10-29 18:47:01

    在序列化的时候不是调用 oos(是ObjectOutputStream 类的对象) 对象的 writeObject(stu);方法吗,然后把 Student 类的对象作为参数传入,那么在Student类下 重写的writeObject方法和readObject方法不应该由Student 对象调用 才能达到里边自行序列化的操作吗,整体代码中也没有 用Student 对象进行调用这两个方法啊  只是用ObjectOutputStream 对象进行序列化和反序列化 Student对象的操做了  我就是不明白这里  是怎么绕的  就让Student 类下那两个重写的方法起到作用了... 感谢你给与的回答

  • 阿双otw
    2017-09-20 19:35:41

    同问,我也想知道

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133755 学习 · 1030 问题

查看课程

相似问题