序列化 - 类加载

时间:2014-02-04 17:51:17

标签: java serialization

serialVersionUID用于确保在反序列化期间加载相同的类(在序列化过程中使用)。我的疑问是什么时候上课? 例如,SerialTry实现了Serializeable

ObjectInputStream is = new ObjectInputStream(new FileInputStream("serial"));
SerialTry st = (SerialTry)is.readObject();

根据这个例子,当加载SerialTry时? readObject()完成从文件读取serialVersionUID的工作,并与加载的类的serialVersionUID进行比较(我在代码中没有提到,所以JVM将创建@ runtime是我的理解)??

1 个答案:

答案 0 :(得分:0)

将从程序的开头加载类定义(如可用于JVM)(由于类的导入或类路径中的类)。该对象将在is.readObject()中生成。

非基本类型的转换不会改变它们的实际类型,只会改变动态类型,所以JVM认为它是什么,而不是它是什么(如果你将奥迪投入汽车,它将是一辆奥迪,所以它不会改变它是什么,而是它的处理方式。所以Object在被转换为SerialTry之前属于SerialTry类。