Java 序列化浅谈
序列化:
序列化是去存储对象的状态的, 一个对象序列化的时候要么是可以完全序列化, 如果里面有一个object是没有声明serializable接口的则无法序列化整个对象.
想要序列化的类必须声明serializable接口
如果序列化过程中想跳过某些变量, 则给这些变量声明为transient的

反序列化:
当一个序列化流被反序列化时候, JVM会尝试在堆上创建一个新的对象, 将对象的状态恢复回来.



要点:
- 你可以通过序列化来存储对象的状态
- 使用ObjectOurputStream来序列化对象
- 用FileOurputStream链接ObjectOutputStream将对象序列化到文件中.
- 对象必须实现序列化整个接口才能被序列化.如果父类实现了序列化, 则子类自动实现.
- 如果有不能序列化的对象, 代码运行期间会抛出异常
- 不想被序列化的变量声明为transient
- 反序列化时候读取对象的顺序必须与写入的顺序相同
- 静态变量不会被序列化.
思考:
如果在一个对象序列化之后,修改了这个类, 会造成序列化的文件无法反序列化.如何解决这个问题.

每当有个对象呗序列化的同时, 会附带一个类的版本识别ID. 被称为serialVersionUID, 根据类的结构信息计算出来的.在对象被反序列化之前会比较id.

浙公网安备 33010602011771号