什么是Java中的Serializable?

可能重复:
Serializable是什么意思?

我有

class Person implements Serializable { } 

这有什么用,如果我只是使用会发生什么

 class Person { } 

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

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

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

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

基本上它是一个标记接口,表示您的类可以序列化。 有关详细信息,请参见此处

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

另请参阅以下为什么Java需要Serializable接口?

这是将此类声明为可序列化的标记接口 。 您应该谷歌搜索“java序列化”,因为这个主题已被数百篇教程和文章充分涵盖。 你甚至可以从维基百科开始 。 简而言之,序列化是关于从文件或网络套接字等流中读取和写入整个对象图。

J2SE文档说:

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

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