为什么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的私有字段。
- 如何以更有效的方式从大型集合文件中删除停用词?
- ZK在列表框中重新排序
- 使用multithreading读取单个文件:应该加快速度吗?
- 多个JVM进程可以共享公共类的内存吗?
- 什么是静态方法和变量?
- java8流和多个
- 简单的Java 2darrays迷宫样本
- Jersey / REST – NoSuchMethodError:com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoaderPA()Ljava / security / PrivilegedAction;
- 是否可以非常频繁地调用ObjectOutputStream上的reset()?