博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象流--对象的序列化
阅读量:5136 次
发布时间:2019-06-13

本文共 873 字,大约阅读时间需要 2 分钟。

1、对象是存在于内存中的(堆内存),有时候我们需要将对象保存在硬盘上,又有时我们需要将对象保存在另一台计算机上等等这样的操作,

      这时候我们需要将对象转化为一个字节序列,而这个过程就是对象的序列化,相反我么又这样一个字节序列需要将其转化为对应的对象,

      这个过程就是对象的反序列化。

2、对象-----序列化---字节序列

     字节序列---反序列化---对象

3、使用OOS实现对象的序列化------ObjectOutputStream是用来对对象进行序列化的输出流,

      其实现对象序列化的方法为:  -void  writeObject(Object  o)

      该方法可以将给定的对象转化为一个字节序列后写出,

4、使用 OIS实现对象的反序列化---ObjectInputStream是用来对对象进行反序列化的输入流,

     其实现对象反序列化打方法为: -Object  readObject()

     该方法 可以从流中读取字节并转化为对象

5、Serialiable接口

      ObjectOutputSream在对对象进行序列化时有一个要求,就是需要序列化的对象所属的类必须实现Serialiable接口,

      实现该接口不需要实现任何方法,其只是作为可序列化的标志,

      通常实现该接口的类,需要提供一个常量serialVersionUid,表名该类的版本,若不显示的声明,在对象序列化时也会根据当前类的各个方面计算该类的默认serialVersionUid,

      但不同平台编译器实现有所不同,所以如果想跨平台,都应有显示的声明版本号。

6、Serialiable接口

      如果声明的类的对象序列化存到硬盘上面,之后随着需求的变化更改了类的属性(增加或减少或更改)呢么反序列化时就会出现InvalidClassException,这样就会造成不兼

     容问题,但当serialVersionUid相同时,它就会将不一样的field以type的预设值反序列化,可避免不兼容问题。

 

     

      

      

转载于:https://www.cnblogs.com/sunfenqing/p/7481736.html

你可能感兴趣的文章
react --- 路由
查看>>
1.5 组件开发基础
查看>>
12.14
查看>>
第二代:晶体管计算机
查看>>
BNUOJ-26580 Software Bugs KMP匹配,维护
查看>>
【leetcode】Search for a Range
查看>>
json常识
查看>>
Vue声明渲染以及axios实例
查看>>
面试题: TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!...
查看>>
MySQL基础
查看>>
Ceph神坑系列
查看>>
2017-2018-2 20179212《网络攻防》第四周作业
查看>>
WIFI模块ESP8266 ---- 之 ----上手测试
查看>>
codeforces 864B - Polycarp and Letters
查看>>
这是C语言无法修改得东西,C语言基础教程之常量解析
查看>>
salt-stack的数据系统Grains
查看>>
1.line (线)
查看>>
41.纯 CSS 绘制一支栩栩如生的铅笔
查看>>
js执行引擎(js解释器)
查看>>
UML-6.1-用例-示例
查看>>