java.io.Serializable 类的意义是啥?

Posted

技术标签:

【中文标题】java.io.Serializable 类的意义是啥?【英文标题】:What is the significance of java.io.Serializable class?java.io.Serializable 类的意义是什么? 【发布时间】:2011-07-28 02:12:06 【问题描述】:

用“外行”的术语来说,我想知道是否有人可以向我解释导入 Serializable 类以实现 java.io.Serializable 接口的重要性和一般重要性。 来自 java 学生的提问

【问题讨论】:

这可能会给你一些有用的信息:***.com/questions/441196/… Serializable 是一个接口而不是一个类。 【参考方案1】:

java.io.Serializable 是所谓的“标记接口”。接口本身没有定义方法。所以任何类都可以通过简单的实现来轻松实现这个接口:

 public class MyClass implements Serializable 
       public void aMethodForMyClass()  

       // not implementing any specific java.io.Serializable methods because
       // the interface has no methods to implement.
 

它是一个“标记”接口,因为通过实现这个接口,你告诉 Java 序列化器可以序列化这种类型的对象。如果你的类没有实现这个接口,序列化器将拒绝序列化该类型的任何对象。

【讨论】:

这也意味着你保证构成这个类的对象的所有变量要么也是可序列化的,要么你实现了处理它们所需的代码。 这是在编译时还是在 JVM 中发生的。换句话说,如果我不实现 Serializable 并尝试序列化一个类,我会遇到编译器或运行时错误吗?【参考方案2】:

您需要了解的有关 Java 序列化的所有信息都可以在 Java Serialization Specification 中找到

Java Serialization FAQ 也包含您问题的答案。

具体来说,第一个问题似乎与您要问的相同:

Why must classes be marked serializable in order to be written to an ObjectOutputStream?

希望对你有帮助!

【讨论】:

以上是关于java.io.Serializable 类的意义是啥?的主要内容,如果未能解决你的问题,请参考以下文章

java中的Serializable接口的作用

关于Serializable

序列化反序列化(实体类或要序列化的对象类必须实现Serializable接口)

Java 之 序列化接口

Java I/O---序列化接口Serializable

java.io.Serializable 序列化问题