什么是Java中的Serializable?

时间:2011-03-10 14:22:50

标签: java serialization

  

可能重复:
  What does Serializable mean?

我有

class Person implements Serializable {
}

如果我只是使用

,会有什么用处和将会发生什么
class Person {
}

7 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:7)

如果您从未序列化Person的实例,则声明implements Serializable没有意义。但是如果你不这样做并尝试序列化一个实例,你将获得NotSerializableException

答案 2 :(得分:4)

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

基本上它是一个标记界面,表示你的类可以被序列化。有关详细信息,请参阅here

答案 5 :(得分:1)

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

另见Why Java needs Serializable interface?

答案 6 :(得分:0)

J2SE doc说:

  

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

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