Java - 对象的默认序列化

时间:2012-04-30 17:23:05

标签: java serialization

  

对象的默认序列化机制会写入类   对象,类签名和所有非瞬态的值   和非静态字段

  1. 这里的“对象类”和“类签名”之间有什么区别吗?
  2. 由于“Class Signature”和“Class”也已通过,JVM是否在目标系统上加载默认类? (或)在序列化对象中传递的类?

3 个答案:

答案 0 :(得分:3)

短语“写对象的类”实际上意味着“编写对象的类名称”。 java对象序列化不写类字节,只写类的名称。当对象在以后反序列化时,它将使用当前jvm中定义的类字节。

答案 1 :(得分:0)

您不存储某种序列化类定义,只存储您序列化的实例的内容。反序列化时,JVM将使用它在类路径中找到的类定义。

所以你必须要理解how versionning works ......

答案 2 :(得分:0)

我认为“class signature”应该引用类'(和serialisable superclass')字段名称和类型,以及串行版本UID。

默认情况下,ObjectInputStream在“最新”类加载器中查找类名(即最靠近调用堆栈的非引导类加载器)。使用指定的类加载器进行明智的子类查找。默认情况下,RMI(使用系统属性将其关闭)查找从流中嵌入的注释加载新类的位置(URL)。