18

在我开始之前,我想让每个人都知道我确实花了很多时间在谷歌上搜索并找到了很多解释和定义。但即便如此,在花了几个小时阅读这个主题之后,仍然显得相当模糊。我知道我必须提出可以改善社区的问题,但这只是为了让我看看我是否对 JavaBeans 有清晰的了解。

据我所知,JavaBean 基本上是一个类,就像任何其他 java 类一样,只是它遵守某些约定,即:

  • 该类必须实现 Serializeable
  • 假定类属性是私有的,并且它们的名称以小写字母开头
  • 每个属性都必须有其各自的 getter 和 setter 方法。
  • 每个 setter 方法都以前缀“get”开头,后跟属性名称,例如 setName()
  • Setter 方法是公开且无效的
  • 同样适用于 getter 方法(前缀“get”、public、返回类型、相应的属性类类型等)
  • 对于布尔属性而不是“get”,使用前缀“is”
  • 严格来说,被认为是“bean”的是类的实例,而不是类本身。

你有它,经过很长时间的阅读,这就是我能理解的……是这样吗?我接近了吗?我完全错了吗?

...感谢大家的回答,以便我可以更新此项目符号列表:-)

4

4 回答 4

10

javabean 是一个标准。所有 Javabean 都具有以下 3 个特性:

1) 类实现Serializable
2) 所有字段都有公共的 setter 和 getter 来控制访问。
3) 一个公共的无参数构造函数。

于 2012-08-06T13:45:27.750 回答
3

是的,差不多就是这样。

只是几个额外的位:

  • getter 不带参数,setter 只带一个与属性相同类型的参数
  • 通过分别省略 setter 或 getter,属性可以是只读的或只写的
  • booleangetter 使用前缀 'is'

而且我认为严格来说它是“bean”的实例,而不是类。

于 2012-08-06T13:46:53.303 回答
2

是这样吗?我接近了吗?

是的,你是比较正确的。大多数 bean 都遵循这样的基本定义规则。但是,只需添加更多内容。为了区分 bean 和 POJO(Plain Old Java Object),bean 有一个默认的构造函数,并且通常实现可序列化的接口。

这使您可以跨许多框架使用基本模型。Bean 主要用于以简单的布局结构存储和检索数据,因此可以在整个特定架构中共享数据模型。示例包括在 UI 中触发事件,使用相同的数据处理不同的对话框和/或检索给定 ORM(对象关系映射)的结果。您可能想要查看的其他示例是 DTO(数据传输对象)、VO(值对象)和 EJB(企业 Java Bean)。

于 2012-08-06T13:55:23.920 回答
0

补充我们同事的答案:

  1. 使用 addXXXListener 方法添加侦听器。
  2. 使用 removeXXXListener 方法删除侦听器。
  3. 布尔(原始)字段应该有一个 isXXX 方法而不是一个 getXXX 方法。

由于它是一个标准,因此遵循它很重要,因为 Java 中的库和技术可能会在后台使用它。示例:JSP 中的表达式语言、GUI 构建器等。

规范:http: //download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/

于 2012-08-06T13:49:16.173 回答