栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > Java面试题

Java中哪些类可以进行序列化和反序列化呢?如何让一个类可以进行序列化?

Java面试题 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中哪些类可以进行序列化和反序列化呢?如何让一个类可以进行序列化?

  • 只有实现了Serializable或Externalizable接口的类的对象才能被序列化,否则ObjectOutputStream的writeObject(Object obj)方法会抛出IOException。
  • 实现了Serializable或Externalizable接口的类也称为可序列化类。
  • Externalizable接口继承Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为。而仅实现Serializable接口的类可以采用默认的序列化方式。
  • Jdk的部分类 如StringDate等都实现了Serializable接口
  • 假定一个Customer类,它的对象需要序列化。 可以有以下三种方式进行
  1. 如果customer类仅仅实现了Serializable接口的类,那么会按照以下方式进行序列化和反序列化:
  • ObjectOutputStream采用默认的序列化方式,对Customer对象的非transient的实例变量进行序列化。
  •  ObjectInputStream采用默认的反序列化方式,对customer对象的非transient的实例变量进行反序列化。

2. 如果customer类仅仅实现了Serializable接口,并且还定义了readObject(ObjectInputStream in)和writeObject(ObjectOutputStream out),那么会按照以下方式进行序列化和反序列化:

  • ObjectOutputStream会调用Customer对象的writeObject(ObjectOutputStream out)方法进行序列化。
  • ObjectInputStream会调用Customer对象的readObject(ObjectInputStream in)方法进行反序列化。
  1. 如果customer类实现了Externalizable接口,那么Customer类必须实现readExternal(ObjectInput in)和writeExternal(ObjectOutput out)方法,那么会按照以下方式进行序列化和反序列化:
  • ObjectOutputStream会调用Customer对象的writeExternal(ObjectOutput out)方法进行序列化。
  • ObjectInputStream会调用Customer对象的readExternal(ObjectInput in)方法进行反序列化。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/359250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号