Java 在哪个类/接口中声明了ReadObjectNodeData()、writeReplace()、readResolve()?
在序列化/反序列化过程中,我们可以定义ReadObjectNodeData/WriterReplace/readResolve来自定义默认的序列化/反序列化行为Java 在哪个类/接口中声明了ReadObjectNodeData()、writeReplace()、readResolve()?,java,java-io,Java,Java Io,在序列化/反序列化过程中,我们可以定义ReadObjectNodeData/WriterReplace/readResolve来自定义默认的序列化/反序列化行为 现在我的问题是,在哪里申报?与readUnshared/writeUnshared一样,它们在ObjectInputStream/ObjectOutputStream中声明/定义。它们没有在任何接口中声明:这是一个语言外约定。Serializable是一个标记接口,它通过Java序列化机制的契约绑定实现它的类。最好的做法是声明一个私有r
现在我的问题是,在哪里申报?与readUnshared/writeUnshared一样,它们在ObjectInputStream/ObjectOutputStream中声明/定义。它们没有在任何接口中声明:这是一个语言外约定。Serializable是一个标记接口,它通过Java序列化机制的契约绑定实现它的类。最好的做法是声明一个私有readResolve,这很明显,不可能有一个接口声明它。它们不在任何接口中声明:这是一个语言外约定。Serializable是一个标记接口,它通过Java序列化机制的契约绑定实现它的类。最好的做法是声明一个私有的readResolve,这使得很明显不可能有一个接口来声明它。序列化机制使用反射来调用这些字段。检测基于方法签名,这些没有接口。序列化机制使用反射来调用这些字段。检测基于方法签名,没有用于这些签名的接口。在ObjectStreamClass中,HasReadObjectNodeMethod/hasReadResolveMethod/hasWriteReplaceMethod是define,用于标识目标类是否定义ReadObjectNodeData/writeReplace/readResolve方法,如果是这样,则在ObjectInputStream/ObjectOutputStream中调用这些方法 ObjectInputStream.readSerialData。。。。 如果obj!=空&& slotDesc.HasReadObjectNodeMethod&& handles.lookupExceptionpassHandle==null { slotDesc.invokeradobjectnodataobj; } ObjectStreamClass还声明以下字段私有方法ReadObjectNodeMethod;私有方法writereplacement;私有方法readresolve方法 在ObjectStreamClass中,HasReadObjectNodeMethod/hasReadResolveMethod/hasWriteReplaceMethod是define,用于标识目标类是否定义了ReadObjectNodeData/writeReplace/readResolve方法,如果是这样,则在ObjectInputStream/ObjectOutputStream中调用这些方法 ObjectInputStream.readSerialData。。。。 如果obj!=空&& slotDesc.HasReadObjectNodeMethod&& handles.lookupExceptionpassHandle==null { slotDesc.invokeradobjectnodataobj; } ObjectStreamClass还声明以下字段私有方法ReadObjectNodeMethod;私有方法writereplacement;私有方法readresolve方法 谢谢你的回复。writeObject/readObject也标记为private,但它们是在ObjectOutputStream/ObjectInputStream中定义的。感谢您的回复。writeObject/readObject也标记为private,但它们是在ObjectOutputStream/ObjectInputStream中定义的。