【发布时间】:2010-08-11 17:37:55
【问题描述】:
我相信我了解 Java Bean 是什么:Java 类包含无参数构造函数,可序列化,并使用 getter 和 setter 公开其字段。
Java Bean 是否必须公开其所有字段才能成为 Bean?如果不是,它甚至必须暴露任何?
Java Bean 是否可以包括带参数的构造函数以及无参数的构造函数?
除了符合某种编码风格之外,Java Bean 的用途是什么?似乎有很多关于“beans this”或“beans that”的讨论,但我不知道为什么它们特别有利。
我完全可以制作无参数构造函数。这可能有很多原因,如果无参数构造函数帮助编译器进行一些优化,我也不会感到惊讶。我也可以理解使您的课程可序列化。即使该类从未被序列化,它可能是,并且追溯执行它可能会很烦人(或者在黑盒库中是不可能的)。
但最令人好奇的是要求所有字段都可以通过 getter 和 setter 访问。当我需要它们时,我确实会在自己的工作中使用它们,但是 Java Beans 需要它们似乎很奇怪(可能所有这些,取决于我对 #1 的回答)。如果这是反射的问题,那么反射不能轻松地获取字段吗?如果不仅仅是简单地设置值是一个问题,如果方法存在,反射不能在字段上使用 getter/setter 吗?
【问题讨论】:
-
很久以前有一个 bean 编辑器,所以这个页面可能有助于理解 bean 的用途:java.sun.com/developer/onlineTraining/Beans/Beans1/…