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

为什么没有实现Serializable的父类的构造函数,就会在反序列化子类的过程中被调用

更想知道的是为什么没有实现Serializable的父类Bar,在反序列化的过程中,构造函数会被调用。而不是仅仅知道这个现象。

正在回答

3 回答

我说一下我的理解吧:说之前首先要说一下概念,序列化就是将对象转换为字节序列,通俗点就是讲创建出来的对象状态保存起来(构造函数初始化之后的)

  1. 父类如果没有实现序列接口,而子类实现序列接口,那么父类对象就不会被序列化,也就不会被保存,而子类却可以被序列化,即保存

  2. Java中构造一个对象,首先得先构造父类对象,才会构造子类对象,所以在反序列化子类时,就会调用父类构造方法来作为默认的父类对象,而子类因为已经被序列化了(已经调用过子类构造方法的状态),所以就不会再调用子类自己的构造方法

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

bigfire 提问者

非常感谢!
2016-07-09 回复 有任何疑惑可以回复我~
#2

qq_我有我的范儿_0 回复 bigfire 提问者

不客气,对于这个问题我刚开始也不明白,也是查了不少资料才弄明白,给你讲一遍当做复习了,一起努力吧
2016-07-10 回复 有任何疑惑可以回复我~

序列化是什么意思,你只要知道了这个你就会知道问题的答案,我建议你自己研究,这样记忆会更深刻,我提一下就是子类实现的时候会调用父类的构造函数,这个是基础理论,知道了这个,序列化也不难理解了

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

举报

0/150
提交
取消

为什么没有实现Serializable的父类的构造函数,就会在反序列化子类的过程中被调用

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