序列化

序列化

序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

将java对象从文件中恢复称为 反序列化 DeSerializetion。

参与序列化和反序列化的对象必须实现Serializeable接口。

Serializeable只是一个标志性接口,java虚拟机看到了类实现了这个接口。jvm会默认提供这个序列化版本号。

当你想序列化多个对象,可以将多个对象装载到一个集合(或其他容器)。集合元素以及集合都需要实现Serializeable接口。

如果希望一些属性不参加序列化(不将数据存储到磁盘)。可以添加Transient属性。

java比较序列化对象的主要从两个方面来区分:

  1. 类名
  2. 序列化版本号

当实现了Serialize接口以后,java会自动生成序列化版本号。但是自动生成序列化版本号存在有缺点。

也就是不能修改类代码,因为单例修改了类代码之前序列化的对象会被认为和这个类不同,因为尽管类名相同,但是由于修改了类代码,序列化版本号被重新提供了。所以凡是实现了Serializable接口的类建议自己指定序列号版本号。

原文地址:https://www.cnblogs.com/freesfu/p/13760932.html