JDK Source中的序列化接口为空。实施它有什么用?

时间:2013-07-04 12:26:26

标签: serialization java

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

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

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

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

package java.io;
public interface Serializable {
}

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

5 个答案:

答案 0 :(得分:1)

why we need to implement this empty interface ??

Its a design pattern

  

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

答案 1 :(得分:0)

Serializable是标记接口

  

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

参考javadocRequirement of the serializable interface

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

marker interface in java

Why Java needs Serializable interface?

答案 4 :(得分:0)

我们不能说没有任何方法的接口是标记接口。因为“标记”这个词本身就意味着“标记某事”的含义。所以我说,接口(无论可能是它的内容)通过实现,如果一个类获得一些额外的或专门的行为,如允许对象存储到持久性存储(Serializable)或允许一个对象使它的副本或raplica(可克隆)或允许用户只实现一个方法(如run()),而不是在线程编程(Runnable)中的子类中实现近4个t0 5方法。

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

<强>结论

标记界面可能包含也可能不包含方法......

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

你也可以从SO中找到我发现的东西:

Why Java needs Serializable interface?