为什么Java Bean必须可序列化?

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

它是Javabeans规范中描述的“典型”特性之一。

这是第2.1章的摘录什么是bean?

各个Java Bean在它们支持的function方面会有所不同,但区分Java Bean的典型统一function是:

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

这是第5.5持久性摘要的摘录:

所有bean必须支持序列化或外部化。

在实践中,它没有明确的必要性。 它通常也可以在没有实现Serializable情况下正常工作。 无论何时你想将它们“普通”存储在硬盘上或通过网络发送“普通”,它都会很有用。 例如,当它是一个会话范围的bean,它将存储在HTTP会话中,并且服务器已经被配置为在关闭/重启期间保持并恢复HTTP会话。 无论如何,每当你在消息中NotSerializableException带有bean的完全限定类名的NotSerializableException时,它就足以让它实现Serializable

是的

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