版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序 列恢复为Java对象的过程。 当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音 频、视频等,而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java 进程进行通信时,实现进程间的对象传送,就需要Java序列化与反序列化了。换句 话说,一方面,发送方需要把这个Java对象转换为字节序列,然后在网络上传送; 另一方面,接收方需要从字节序列中恢复出Java对象。 什么情况下需要序列化 1. 当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; 2.
2、当你想用套接字在网络上传送对象的时候; 3. 当你想通过RMI传输对象的时候; 序列化作用 实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文 件里);利用序列化实现远程通信,即在网络上传送对象的字节序列。 JDK类库中序列化API java.io.ObjectOutputStreamjava.io.ObjectOutputStream:表示对象输出流:表示对象输出流 它的writeObject(Object obj)方法可以对参数指定的obj对象进行序列化,把得到 的字节序列写到一个目标输出流中。 java.io.ObjectInputStreamjava.io.Obj
3、ectInputStream:表示对象输入流:表示对象输入流 它的readObject()方法源输入流中读取字节序列,再把它们反序列化成为一个对象, 并将其返回。 实现Java对象序列化与反序列化的方法 假定一个Student类,它的对象需要序列化,可以有如下三种方法: 方法一:若Student类仅仅实现了SerializableSerializable接口接口,则可以按照以下方式进行序 列化和反序列化。ObjectOutputStream采用默认的序列化方式,对Student对象的非 transient的实例变量进行序列化。ObjcetInputStream采用默认的反序列化方式,对 Stu
4、dent对象的非transient的实例变量进行反序列化。 方法二:若Student类仅仅实现了Serializable接口,并且还定义了 readObject(ObjectInputStream in)和writeObject(ObjectOutputSteam out),则采用 以下方式进行序列化与反序列化。ObjectOutputStream调用Student对象的 writeObject(ObjectOutputStream out)的方法进行序列化。ObjectInputStream会调用 Student对象的readObject(ObjectInputStream in)的方法进行
5、反序列化。 方法三:若Student类实现了ExternalnalizableExternalnalizable接口接口,且Student类必须实现 readExternal(ObjectInput in)和writeExternal(ObjectOutput out)方法,则按照以 下方式进行序列化与反序列化。ObjectOutputStream调用Student对象的 writeExternal(ObjectOutput out)的方法进行序列化。ObjectInputStream会调用 Student对象的readExternal(ObjectInput in)的方法进行反序列化。 JD
6、K类库中序列化的步骤 步骤一:创建一个对象输出流。 它可以包装一个其它类型的目标输出流,如文件输出流:ObjectOutputStream out = new ObjectOutputStream(new fileOutputStream(“D:objectfile.obj”); 步骤二:通过对象输出流的writeObject()方法写对象: out.writeObject(“Hello”); out.writeObject(new Date(); JDK类库中反序列化的步骤 步骤一:创建一个对象输入流,它可以包装一个其它类型输入流,如文件输入流: ObjectInputStream in = new ObjectInputStream(new fileInputStream(“D:objectfile.obj”); 步骤二:通过对象输出流的readObject()方法读取对象: String obj1 = (String)in.readObject(); Date obj2 = (Date)in.readObject(); 总结 1)Java
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026挪威水产养殖业可持续发展与生态环境保护策略规划研究报告
- 2026Fast芯片组客户需求分析与产品定位战略研究报告
- 2026中国智能家居毫米波雷达传感器隐私保护与技术平衡点探讨
- 2026日韩汽车电池技术标准竞争体系供应链投资格局规划
- 先进制程推动半导体设备零部件涂层加速升级
- 2026柔性屏智能手机生产工艺需求分析评估报告
- 2026中国食品饮料行业品牌价值分析及市场营销渠道整合研究
- 2026桥梁施工检测技术与设备市场深度调研及桥梁安全维护新方案建设方法研究报告
- 2026中国智能座舱触觉反馈模块响应速度与用户体验报告
- 2026Fast芯片组行业隐形冠军企业成长路径解密
- 2026年8月成都市建筑科学研究院有限公司招聘检测辅助岗笔试备考题库及答案详解
- 2026 高考化学试题评析及教学启示河南卷
- 2026年国家统一法律职业资格考试全套真题(含标准答案+详细解析)
- 2026四川光雾山文旅康养产业有限公司招聘1人笔试题库含答案详解【黄金题型】
- 老师批改作业8种方法
- 2026年重庆市网格员招聘考试试题及答案解析
- 初中三年级英文短文范文 100 篇
- 南昌市房屋市政工程生产安全重大事故隐患排查整治指导手册
- 护理科研的步骤与方法
- 2026年(全国I卷)高考英语真题及答案解析
- 2026年国企子公司中层竞聘面试核心试题与技巧含答案
评论
0/150
提交评论