我有
class Person implements Serializable {
}
如果我只是使用
,会有什么用处和将会发生什么class Person {
}
答案 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只是一个标记界面。它完全是空的。它只是允许序列化机制来验证该类是否能够被持久化。
答案 6 :(得分:0)
J2SE doc说:
实现java.io.Serializable接口的类启用了类的可序列化。 未实现此接口的类将不具有任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。
基本上,它是您必须为java中的序列化类实现的接口。