1

在了解 Java 中如何使用标记接口时,我从 ObjectOutputStream 类中找到了 writeObject 方法。它接收 Object 的实例作为输入,并且仅当给定的参数是 Serializable 的实例时才进行序列化。

为什么 writeObject 方法不接收 Serializable 实例作为输入而不是 Object,以便在编译时进行类型检查?将参数类型设为 Object 并对 Serializable 执行 instanceOf 检查的原因是什么?

4

1 回答 1

0

为了使序列化工作,Object需要是Serializable. 但是,对于编写对象,您可能会从 jdk 源代码中看到,ObjectwriteObject. 一个简单的例如being obj.getClass()

因此,如果该writeObject方法Serializable作为输入,最终用于引用方法,如obj.getClass(),无论如何都必须转换为Object

于 2021-09-08T12:37:01.037 回答