序列化(Serialization):将对象的状态信息转换为可以存储或传输的形式的过程
反序列化(DeSerialization)
static属性不参与序列化
如果不希望某个属性参与序列化,要使用 transient 修饰
凡是实现Serializable接口的类都有一个表示序列化版本标识符的静态变量:private static final long serialVersionUID
serialVersionUID用来表明类的不同版本间的兼容性
如果类没有显示定义这个静态变量,它的值是Java运行时环境根据类的内部细节自动生成的。若类的实例变量做了修改,serialVersionUID可能发生变化,因此建议显式声明该变量
简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本的一致性。进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常(InvalidCastException)
原文:https://www.cnblogs.com/tang321/p/14802051.html