- 反序列化的过程:
- 读取二进制文件;
- 读取序列化的对象,读取过程中虚拟机会在当前工程当中寻找序列化的目标类(反序列化类):
- 如果没找到报ClassNotFoundException;
- 如果找到了目标类(立即加载该类),但是反序列化类的ID和序列化类的ID不同,则报InvalidClassException;
- 如果类全限定名相同,且序列化ID相同,则对象读取成功,默认为Object类型
- 找到合适的类(全限定名相同,且序列化ID相同),然后进行强转
- 此强转在代码中由开发人员显式写明;
- 如果强转类,和虚拟机找到的类在语法上不一致,则报ClassCastException