为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

5 回答

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

0 回复 有任何疑惑可以回复我~
#1

张禹专 提问者

还是不明白 为什么括号里有java.io.ObjectOutputStream s 就可以了 有这个不就是作为一个传入的参数(对象)? 但是不也得要有对象调用这个方法 方法内的功能不才可以作用吗,没有对象调用这两个方法,那里边对transient修饰的成员做序列化和反序列化是怎么启动作用的呢?
2017-10-28 回复 有任何疑惑可以回复我~
#2

64946 回复 张禹专 提问者

这个s不就是ObjectOutputStream对象的实例吗 ,stuage是int型的,然后在方法体内不是调用了s.WriteInt()进行序列化吗,上一句是将默认可以序列化的进行序列化,stuage是transient的,所以。。。。
2017-10-29 回复 有任何疑惑可以回复我~
#3

张禹专 提问者 回复 64946

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

pcshao 回复 张禹专 提问者

我觉得jvm在对象序列化与反序列的过程中会自动执行那些方法,老师也说了这个特殊的方法叫做签名。有兴趣的话可以读读JVM原理
2018-04-06 回复 有任何疑惑可以回复我~
#5

MockingjayHunter

答非所问
2018-05-20 回复 有任何疑惑可以回复我~
#6

MockingjayHunter 回复 pcshao

666
2018-05-20 回复 有任何疑惑可以回复我~
查看3条回复

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

0 回复 有任何疑惑可以回复我~

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


因为这是规定:

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

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

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


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


3 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

同问,我也想知道

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信