当前位置: 首页 > 面试题库 >

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

云德辉
2023-03-14
问题内容

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


问题答案:

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

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

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

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

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

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

在实践中,它并不一定要起作用。通常,如果不执行它,它也可以正常工作Serializable。但是,当您要将它们“普通”存储在硬盘上或通过网络发送“普通”时,它很有用。例如,当它是一个会话范围的bean(将存储在HTTP会话中)并且服务器被配置为在关闭/重新启动期间持久并恢复HTTP会话时。无论如何,只要您NotSerializableException在消息中遇到带有Bean的完整合格类名的,它就足以使它实现Serializable



 类似资料:
  • 你好,我在从github到我的项目中实现一些代码源时遇到了问题,所以。。。我正在尝试构建一个管道,然后创建StreamStage来读取源代码,并使用项目中的方法构建一个queuesink,我总是遇到同样的错误“线程中的异常”main“java.lang.IllegalArgumentException:”mapFn“必须可序列化” 我正在阅读关于Hazelcast Jet序列化的文档,一切似乎都很

  • 问题内容: 每个人都告诉我“使用super.viewDidLoad()因为它就是这样”或“我一直那样做,所以要保留它”,“如果不叫super就是错误的”等。 我只发现了一些有关Objective-C用例的主题,这些主题并没有那么启发性,但是我正在Swift 3中进行开发,所以有什么专家可以给我一个很好的详细解释吗? 这是一种良好实践的案例还是有任何隐藏的影响? 问题答案: 通常,最好为您覆盖的所有

  • 我正在分析SonarQube 5.1版的Java SE 7项目。 然后,我在下面的代码中面对squid:S1948。 “可序列化”类中的字段应该是瞬态的或可序列化的 Serializable类中的字段本身必须是可序列化的或瞬态的,即使该类从未显式序列化或反序列化。这是因为在负载下,大多数J2EE应用程序框架都会将对象刷新到磁盘,并且具有非瞬态、不可序列化数据成员的所谓可序列化对象可能会导致程序崩溃

  • 如果接口只是一个标记接口,用于在 java 中传递有关类的某种元数据 - 我有点困惑: 在阅读了java的序列化算法(元数据从下到上,然后从上到下的实际实例数据)的过程之后,我无法真正理解哪些数据不能通过该算法进行处理。 简而言之: 哪些数据可能导致? 我怎么知道我不应该为我的类添加子句?

  • 在Scala表示法中,是一个函数,它接受任何类型并将其映射到所有列表类型集合中的一个类型,例如它将类型映射到类型并映射上的函数 到 到 现在,的每个实例都是一个monoid,具有函数(在Haskell中为)和函数(在Haskell中为)。我的猜测是,可以使用列表是单ID这一事实来说明必须映射列表的所有元素。我在这里的感觉是,如果从Applicative中添加函数,就会得到一个列表,其中只有一个其他

  • 问题内容: 如下代码: 引发以下异常: 我猜内部类具有一个允许对其私有访问的字段和方法的字段。声明内部类static 可以解决它,但是如果需要此访问权限怎么办?有没有一种方法可以在不包含封闭类的情况下序列化非静态内部类,例如通过引用外部类? 编辑:例如,仅在序列化之前才需要访问外部类。好的,编译器不知道这一点,但是我认为这就是关键字存在的原因。 问题答案: 如果InnerClass需要此访问权限怎