概念
序列化是将对象用一串字节流描述的过程,用于解决再对象流读写操作中发生的问题。
特点
- 如果一个类能被序列化,那么其子类也可以
- 被static修饰的成员变量和被transient修饰的对象临时数据,不能被序列化
使用的场景
由于序列化的使用会影响系统的性能,所以需要在适当的适合再使用。
- 需要通过网络来发送对象
- 需要将对象的状态持久化到数据库或文件中
- 序列化可以实现对象的深拷贝
SerialVersionUID
这个值在序列化与反序列化中有重要的作用,每个类都有一个特定的SerialVersionUID,如果待序列化对象和目标对象的SerialVersionUID不同,则会抛出InvalidClassException异常。
自定义SerialVersionUID的优点:
- 提高程序运行效率, 如果没有自定义SerialVersionUID,则计算机会自动生成
- 提高不同平台的兼容性,因为不同平台计算SerialVersionUID的方式不同,因此会得到不同的值
- 提高不同版本的兼容性,因为每次修改类的属性都会改变SerialVersionUID,而自定义这个值则不会有这个问题。