2012-08-06 85 views
17

在我开始之前,我只想让大家知道我确实花了很多时间用google搜索,发现很多的解释和定义。但即使如此,花费数小时阅读该主题后,仍然显得相当模糊。我知道我必须提出可以改善社区的问题,但这只是为了让我看看我是否对JavaBeans有清晰的认识。简单英语中的JavaBeans是什么?

从我可以做出来,一个JavaBean基本上是一类类似,只是它遵循某种约定任何其他的Java类,即:

  • 这个类必须实现可序列化
  • 类属性假定是私人的,他们的名字以小写字母开头
  • 每个属性都必须有它的各自的getter和setter方法。
  • 每个setter方法都以前缀“get”开始,后跟属性名称,例如的setName()
  • setter方法是公开的,无效
  • 同样适用于getter方法(前缀“得到”,公众,返回类型相应的属性类的类型等)
  • 对于布尔属性而不是“得”一使用前缀'is'
  • 严格地说,它是被认为是'bean'而不是类本身的类的实例。

在你阅读了很长时间之后,你就有了,这就是我所能做的......是吗?我关门了吗?我有这个完全错误的吗?

...感谢大家的答案,这样我就可以更新此项目列表:-)

+0

相关:http://stackoverflow.com/questions/1727603/places-where-javabeans-are-used – assylias 2012-08-06 13:46:41

+0

关于布尔属性getter有一个错误:你写'set'而不是'is'。 – Autar 2012-08-06 14:00:00

回答

11

一个JavaBean是一种标准。所有的Javabeans都具有以下3个品质:

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

+6

我以为可序列化是没有必要的。 – assylias 2012-08-06 13:46:11

+3

http://stackoverflow.com/questions/3142181/have-java-beans-to-be-serializable – 2012-08-06 13:46:51

+0

我认为这是必要的,以满足标准;在实践中可能不必在所有情况下都起作用。 – hvgotcodes 2012-08-06 13:50:09

4

是的,这就是它。

只是一对夫妇的额外位:

  • 吸气剂没有参数,和setter采取相同类型的单个参数作为财产
  • 属性可以是只读或只写通过省略setter或getter分别
  • boolean干将使用前缀“是”

而且我认为严格这是“豆”,而不是类的实例。

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/

+1

你从哪里见过听众是必要的?我还没有听说过... – maba 2012-08-06 13:52:00

+0

他们是没有必要的,但如果你必须使用,则应遵循标准。至少我在五年前得到我的SCJP时研究过它。看看:http://www.oracle.com/technetwork/java/javase/documentation/javabeans-getlisteners-192680.html – davidbuzatto 2012-08-06 13:53:39

2

是不是这样?我关门了吗?

是的,你是正确的比较。大多数豆类坚持这种基本的定义规则。但是,只需添加几件事。为了区分bean和POJO(Plain Old Java Object),bean有一个默认的构造函数,通常实现可序列化的接口。

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

相关问题