6

它被标记为重复,我正在扩展我的问题。

我的问题是 JDK 如何在内部序列化对象。当类实现该接口时,ObjectxxxStreams 类如何序列化。?

我正在研究序列化主题并深入研究 JDK 源代码。

这是JDK中序列化接口的源代码。

package java.io;
public interface Serializable {
}

这个界面什么都没有。实现这个接口有什么用。我知道,要序列化一个对象,我们应该实现它。我知道什么是序列化以及如何使用它。ObjectInputStream但是如何在内部使用and进行序列化ObjectOutputStream。这些类是如何与序列化相关的。或者,让我们保持这两个班级正在履行职责。我所有的问题是为什么我们需要实现这个空接口来序列化和反序列化对象以及它在内部是如何工作的?请对此进行详细说明。

4

5 回答 5

1
why we need to implement this empty interface ??

它是一种设计模式

标记接口模式是计算机科学中的一种设计模式,与提供有关对象的运行时类型信息的语言一起使用。它提供了一种将元数据与语言没有明确支持此类元数据的类相关联的方法。

于 2013-07-04T12:35:52.603 回答
0

Serializable 是标记接口

java.io.Serializable 标记接口。它没有任何成员定义它。当一个 java 类要被序列化时,你应该以某种方式提示 java 编译器有可能序列化这个 java 类。在这种情况下,使用标记接口。

参考javadoc可序列化接口的要求

于 2013-07-04T12:28:41.283 回答
0

Serializable 是标记接口,标记接口没有任何方法,但在方法签名中具有重要意义,以便 JVM 可以识别它。

于 2013-07-04T12:30:22.710 回答
0

我们不能说没有任何方法的接口是标记接口。因为“标记”这个词本身就表示“标记某物”的意思。所以我说,接口(无论它的内容是什么)通过实现,如果一个类获得一些额外的或专门的行为,比如允许对象存储到持久性存储中(可序列化)或允许对象使其重复或复制(可克隆)或允许用户仅实现一种方法(如 run()),而不是在线程编程(Runnable)的子类中实现近 4 t0 5 个方法。

这些是对象在实现那些只是称为 MARKER INTERFACE 的接口时可以获得的特殊行为。

结论

标记接口可能包含也可能不包含方法...

它也可以称为标记接口,虚拟接口,空接口......

您还可以参考我从 SO 中找到的内容:

为什么 Java 需要 Serializable 接口?

于 2013-07-04T12:36:57.750 回答
0

java.io.Serializable这就是所谓的标记界面。它没有声明任何功能,它只是向其他处理实现类的实体标记它是可序列化的。有关这些主题的良好讨论,请查看:

java中的标记接口

为什么 Java 需要 Serializable 接口?

于 2013-07-04T12:34:17.880 回答