什么是Java bean?

可能重复:
豆子有什么意义?

什么是javabean? 它是干什么用的? 什么是代码示例? 我听说它用于与getter和setter方法有关吗? 我对java bean是什么以及你甚至访问它的地方都很困惑。 我用Google搜索,但找不到明确的答案。

Java Bean是一个普通的Java类,它具有私有属性及其公共getter和setter方法。

Java Bean通常用作帮助程序类。

示例 –

public class User implements java.io.Serializable { private String name; private Integer age; public String getName(){ return this.name; } public void setName(String name){ this.name = name; } public Integer getAge(){ return this.age; } public void setAge(Integer age){ this.age = age; } } 

实现Serializable不是强制性的,但如果您希望在Java内存之外保留或传输Javabeans,例如在硬盘或网络中,则非常有用。

使用JavaBeans的地方?

JavaBeans是Java的可重用软件组件。 实际上,它们是用符合特定约定的Java编程语言编写的类。 它们用于将许多对象封装到单个对象(bean)中,以便它们可以作为单个bean对象而不是作为多个单独对象传递。 JavaBean是一个可序列化的Java对象,具有0参数构造函数,并允许使用getter和setter方法访问属性。

好处

  • Bean获得了Java“一次编写,随处运行”范例的所有好处。
  • 可以控制暴露给另一个应用程序的Bean的属性,事件和方法。
  • 可以提供辅助软件来帮助配置Bean。
  • Bean的配置设置可以保存在永久存储中,以后可以恢复。
  • Bean可以注册以从其他对象接收事件,并可以生成发送给它的事件。

缺点

  • 具有nullary构造函数的类可能在无效状态下被实例化。 如果这样的类是由开发人员手动实例化的(而不是由某种框架自动实例化),那么开发人员可能没有意识到他已经在无效状态下实例化了该类。 编译器无法检测到这样的问题,即使有文档记录,也无法保证开发人员会看到文档。
  • 必须为每个属性创建一个getter,并为许多,大多数或所有属性创建一个setter,这会产生大量的样板代码。

示例:

 package beans; /** * Class PersonBean. */ public class PersonBean implements java.io.Serializable { private String name; private boolean deceased; /** No-arg constructor (takes no arguments). */ public PersonBean() { } /** * Property name (note capitalization) readable/writable. */ public String getName() { return this.name; } /** * Setter for property name. * @param name */ public void setName(final String name) { this.name = name; } /** * Getter for property "deceased" * Different syntax for a boolean field (is vs. get) */ public boolean isDeceased() { return this.deceased; } /** * Setter for property deceased. * @param deceased */ public void setDeceased(final boolean deceased) { this.deceased = deceased; } } 

参考http://en.wikipedia.org/wiki/JavaBeans

好吧,JavaBean API定义了许多与JavaBeans相关的约定。 根据维基百科:

所需的约定如下:

  • 该类必须具有公共默认构造函数(无参数)。 这允许在编辑和激活框架内轻松实例化。
  • 根据标准命名约定,必须使用get,set,is(用于布尔属性而不是get)和其他方法(所谓的访问器方法和mutator方法)来访问类属性。 这允许在框架内轻松自动检查和更新bean状态,其中许多包括用于各种类型属性的自定义编辑器。 Setters必须只收到一个参数。
  • 该类应该是可序列化的。 它允许应用程序和框架以独立于VM和平台的方式可靠地保存,存储和恢复bean的状态。

通常,这些是可以在应用程序中找到的最常见的类类型,因为它们可以用于对所使用的数据进行建模。 这种bean的一个例子如下所示:

 public class Person implements Serializable { private String name; private boolean alive; public Person() { // constructor logic... } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isAlive() { return alive; } public void setAlive(boolean alive) { this.alive = alive; } } 

如您所见,属性反映在getter和setter中。

HTH

如果你在谈论java-beans而不是EJB Bean ,那么这里是解释……

1. JavaBean有一个不带参数的构造函数。

2. JavaBean具有一组属性。

3. JavaBean具有访问器(getXxx,或用于布尔属性的isXxx)方法和mutator方法(setXxx),允许访问其底层属性。

第3点说明了一个带有私有实例变量和公共getter setter的java类。

例如:

 import java.util.Date; public class User { private Date loginDate; private String name; private String password; public User() { } public Date getLoginDate() { return loginDate; } public String getName() { return name; } public String getPassword() { return password; } public void setLoginDate(Date loginDate) { this.loginDate = loginDate; } public void setName(String name) { this.name = name; } public void setPassword(String password) { this.password = password; } public void delete() { // code to delete user from database } public void update() { // code to update user in database } public static User getUser(String name) { // code returning a new User object // populated from the database } }