反序列化
与序列化相反,将二进制流转化为特定的数据结构。
在Java中,使用ObjectInputStream
对对象进行反序列化。
反序列化对象时可能抛出的异常:
CLassNotFoundException
:没有找到对应的ClassInvalidClassException
:Class不匹配
为避免Class定义变动导致不兼容,Java序列化允许class定义一个特殊的serialVersionUID
静态变量,用于标识Java类的序列化版本。如果增加或修改了字段,可以改变 serialVersionUID
的值,这样就能组织匹配Class:
public class Person implements Serializable {
private static final long seriaVersionUID = 2709425275741743919L;
}
反序列化时,是由JVM直接构造出Java对象,不调用构造方法,构造方法内部的代码,在反序列化时不会执行。