章节
问答
课签
笔记
评论
占位
占位
今日不再显示

下一节课程: 序列化中子父类构造函数问题 (11:43) 下一节 重新观看

3 秒后播放下一节

为你推荐

12年以上的大型项目研发及项目管理经验,曾经策划多个大型项目与网站的架构,主持过访问量达亿级的大型网站。近期先后为多家知名公司授课,有多年的培训经验。对知识点的讲解细腻、逻辑性强。

提问题

写笔记

代码语言
公开笔记
提交
加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / hervie
是这样的,对象序列化之后,不管是什么文件后缀,打开都是乱码。反序列化后,取出来的数据用打印toString就是正常的。

最新回答 / qq_prisoner_4
不需要

已采纳回答 / qq_想飞上蓝天的猪_0
通过反射会去调用你所要序列化的对象是否有对应名称的方法,来决定是否采用默认的

最赞回答 / MockingjayHunter
特殊的方法签名,我已经明白了

最新回答 / 我踽踽独行
序列化后以字节形式写入硬盘中,由于实现了序列化接口,所以jvm会执行序列化

已采纳回答 / 橙子111000
EOFException 文件尾异常很明显,你用readInt无法读出Int,反而读到了文件尾

最赞回答 / 噩噩噩噩噩噩噩噩Plus
那是因为你没有在类中创建toString()函数public String toString() { return id+" "+name+" "+age; }

最赞回答 / 一五五一
ObjectOutputStream的实例调用writeObject(obj)方法时,虚拟机通过反射检查对象的类是否实现Serializable接口,如果实现,则虚拟机内部进行序列化操作,同时通过反射检测类是否有writeObject方法,如果有则调用obj的writeObject方法,反序列化类似。我是这样理解的,欢迎指正。

已采纳回答 / yeehom
这样写是出于兼容性考虑。旧版本的JDK中,ArrayList的实现有所不同,会对length字段进行序列化。而新版的JDK中,对优化了ArrayList的实现,不再序列化length字段。这个时候,如果去掉s.writeInt(size),那么新版本JDK序列化的对象,在旧版本中就无法正确读取,因为缺少了length字段。因此这种写法看起来多此一举,实际上却保证了兼容性。附上官方解释:defaultReadObject() and defaultWriteObject() should be the fi...

已采纳回答 / LioHD
private void writeObject(java.io.ObjectOutputStream s)throws java.io.IOException{ s.defaultWriteObject();//把虚拟机默认能序列化的元素 进行序列化 s.writeUTF(str); }private void readObject(java.io.ObjectInputStream s)throws java.io.IOException,ClassNotFoundException{ s.de...
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言