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

时间:2010-06-29 15:27:18

标签: java javabeans

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

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:12)

这是Javabeans specification中描述的“典型”功能之一。

以下是 2.1什么是bean?

章节的摘录
  

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

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

这是 5.5持久性概要

章节的摘录
  

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

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