对象序列化和对象的反序列化
对象中的数据: new Person() 自己成员变量
如果对象数据基本不变,反复使用
什么是序列化
将对象中的数据,以二进制的形式,写入硬盘,永久保存
二进制文件,可以在互联网上传输
什么是反序列化
将硬盘中存储的对象的二进制文件,读取出来,还原回对象中数据
实现对象的序列化,有流对象支持
写对象的流,实现对象的序列化 java.io.ObjectOutputStream
读对象的流,实现对象的反序列化 java.io.ObjectInputStream
写对象的时候,出现了以异常
Exception in thread "main" java.io.NotSerializableException:
cn.itcast.iostream.Person
Person类,实现Serializable,开启序列化功能
静态:成员变量,属于自己的类,不属于对象,不能序列化
transient 修饰成员变量,用法只有这一种,阻止序列化
Serializable接口
里面没有抽象方法,实现后,不需要重写任何方法,接口存在意义就是个标记,
JVM看 到这个标记,给类序列化
凡是没有抽象方法的接口,都是标记型接口,给实现类做一个标记.
Exception in thread "main" java.io.InvalidClassException:
cn.itcast.iostream.Person; local class incompatible:
stream classdesc serialVersionUID = 8784174444617435087,
local class serialVersionUID = 5970622219467240027
异常:序列号发生了冲突 |
|