1、什么是序列化:
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化
序列化后可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间
2、序列化与反序列化:
序列化 : 把Java对象转换为字节序列的过程
反序列化 : 把字节序列恢复为Java对象的过程
3、序列化目的及用途:
目的:
序列化是为了解决在对对象流进行读写操作时所引发的问题
用途:
a. 把对象的字节序列永久地保存到硬盘上
b. 在网络上传送对象的字节序列
4、如何实现序列化:
实现序列化有两种方式
a. 将被序列化的类实现Serializable接口
注意:
Serializable接口没有需要实现的方法,
实现Serializable接口只是为了标注该对象是可被序列化的,然后使用一个 输出流 来构造一个 对象流(ObjectOutputStream) 对象,
然后使用 对象流 对象的 writeObject(Object obj) 方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流
b. 实现接口Externalizable
5、实现Java的序列化注意事项:
a. Java的序列化时,transient变量和静态变量不会被序列化
b. 如果先序列化对象A后序列化B,那么在反序列化的时候一定记着JAVA规定先读到的对象是先被序列化的对象,不要先接收对象B,
因为那样会报错,尤其在使用Externalizable的时候一定要注意读取的先后顺序
c. 实现序列化接口的对象并不强制声明唯一的serialVersionUID,
但是是否声明serialVersionUID对于对象序列化的向上向下的兼容性有很大的影响
|
|