【问题标题】:What is Serializable in Java? [duplicate]Java中的可序列化是什么? [复制]
【发布时间】:2011-07-12 18:28:19
【问题描述】:

可能重复:
What does Serializable mean?

我有

class Person implements Serializable {
}

那有什么用,如果我简单地使用会发生什么

class Person {
}

【问题讨论】:

  • 好吧,首先你会得到一个语法错误,因为你没有关闭括号。

标签: java serialization


【解决方案1】:

serializable 是一个特殊的接口,它指定类是可序列化的。它的特殊之处在于,与普通接口不同,它没有定义任何必须实现的方法:它只是将类标记为可序列化。有关详细信息,请参阅 Java docs。

至于“可序列化”的含义,它只是意味着将类(对象)的实例转换为可以写入磁盘或可能通过网络传输的格式。例如,您可以将对象保存到磁盘并稍后重新加载,同时保存所有字段值和内部状态。有关更多信息,请参阅维基百科 page。

【讨论】:

  • 但是为什么会有单独的界面。我的意思是使 evrything 可序列化有什么害处。我的意思是从定义上看,一直拥有它并不坏。我的意思是在任何情况下,如果我实现它并且它会做一些损坏,这就是为什么 java 人使它成为可选的。最终一切都会在磁盘上
  • @Pasha - 因为对于某些对象来说,它们是可序列化的没有意义。还有性能方面的考虑。阅读此信息以获取信息:java.sun.com/developer/technicalArticles/Programming/…
  • 如果您是 Java 新手。这是多态性的实际应用。如果一个类实现了一个接口,那么该类可以传递到任何可以接受其父级作为参数的地方。在这种情况下,子类可以传递给诸如 Results.writeOutput(Serializable s) 之类的函数
【解决方案2】:

如果您从不序列化Person 的实例,则声明implements Serializable 毫无意义。但如果你不这样做并尝试序列化一个实例,你会得到一个NotSerializableException。

【讨论】:

    【解决方案3】:

    序列化确保数据可以通过网络发送,并且可以使用序列化/反序列化机制持久化并恢复到其原始状态。

    【讨论】:

      【解决方案4】:

      这是一个marker interface,将此类声明为serializable。您应该google for "java serialization",因为该主题已被数百篇教程和文章充分涵盖。你甚至可以start right at Wikipedia。简而言之,序列化就是从文件或网络套接字等流中读取和写入整个对象图。

      【讨论】:

        【解决方案5】:

        基本上它是一个标记接口,表示您的类可以序列化。请参阅here 了解更多信息。

        【讨论】:

          【解决方案6】:

          Serializable 只是一个标记接口。它完全是空的。它只是允许序列化机制验证类是否能够被持久化。

          另见Why Java needs Serializable interface?

          【讨论】:

          • 每个人都提到序列化,但这个词实际上是什么意思??
          • @Pasha 序列化是将数据结构或对象转换为可以存储(例如,在文件或内存缓冲区中,或通过网络连接链路传输)和“复活的格式”的过程" 稍后在相同或另一个计算机环境中。当根据序列化格式重新读取生成的一系列位时,它可以用于创建原始对象的语义相同的克隆。
          【解决方案7】:

          J2SE doc 说:

          类的可序列化性由实现 java.io.Serializable 接口的类启用。 未实现此接口的类将不会对其状态进行任何序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于识别可序列化的语义。

          基本上,它是您必须为在 java 中序列化类而实现的接口。

          【讨论】:

            猜你喜欢
            • 2010-10-11
            • 2012-01-17
            • 2011-04-14
            • 2011-11-15
            • 2011-01-16
            • 1970-01-01
            • 2016-02-06
            • 2014-01-31
            • 2013-08-01
            相关资源
            最近更新 更多