为什么Java Beans必须是可序列化的?

19

Java Bean 是否必须实现 Serializable 接口?

2个回答

17

这是在JavaBean规范中描述的“典型”功能之一。

以下是第2.1节 什么是bean?的摘录:

单个Java Bean将因其支持的功能而异,但区分Java Bean的典型统一特征包括:

  • 支持“内省”,以使构建工具能够分析bean的工作方式
  • 支持“自定义”,以便在使用应用程序构建器时,用户可以自定义bean的外观和行为。
  • 支持“事件”作为一个简单的通信隐喻,可用于连接bean。
  • 支持“属性”,既用于自定义又用于编程使用。
  • 支持持久性,以便在应用程序构建器中自定义bean,然后保存其自定义状态并稍后重新加载。

以下是第5.5节 持久性总结的摘录:

所有bean必须支持Serialization或Externalization中的任何一个。

实际上,为了使它正常工作,并不需要显式地实现 Serializable 接口。但是,如果您想将它们“原封不动”地存储在硬盘上或通过网络发送,则实现该接口会非常有用。例如,当它是一个要存储在 HTTP 会话中的会话作用域 bean, 并且服务器被配置为在关闭/重启期间持久化和恢复 HTTP 会话时。无论如何,如果您遇到带有 bean 的完全限定类名的 NotSerializableException ,那么这就足以让它实现 Serializable 接口。


1
关于 ApplicationScoped bean,它们需要实现 Serializable 接口吗? - Rajat Gupta

14

是的

按照定义,Java Bean 就是一个可序列化的 POJO(普通的 Java 对象),拥有无参构造函数和带有 getter/setter 的私有字段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接