Java—对象的默认序列化

Java—对象的默认序列化,java,serialization,Java,Serialization,对象的默认序列化机制写入 对象、类签名和所有非瞬态 和非静态场 这里的“对象类”和“类签名”有什么区别吗 由于还传递了“类签名”和“类”,JVM是否在目标系统上加载默认类?(或)在序列化对象中传递的类 短语“写入对象的类”实际上意味着“写入对象的类名”。java对象序列化不写入类字节,只写入类的名称。稍后反序列化对象时,它将使用当前jvm中定义的类字节。您不存储某种序列化的类定义,只存储序列化的实例的内容。反序列化时,JVM将使用在其类路径中找到的类定义 因此,您必须理解…我认为“类签名”应该是

对象的默认序列化机制写入 对象、类签名和所有非瞬态 和非静态场

  • 这里的“对象类”和“类签名”有什么区别吗
  • 由于还传递了“类签名”和“类”,JVM是否在目标系统上加载默认类?(或)在序列化对象中传递的类

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

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

    因此,您必须理解…

    我认为“类签名”应该是指类(和可序列化的超类)字段名和类型,以及串行版本UID


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

    您所说的“默认类”是什么意思?这里没有默认类。我猜,但是我认为这个类可以是一个/package/MyClass$aninerClass,签名会说如果它是公共的,它扩展了什么/实现了什么等等。有人能证实这一点吗?