除了getter和setter之外,JavaBean还有其他方法吗?

时间:2014-04-03 15:42:24

标签: java javabeans

根据我在互联网上找到的定义,JavaBean是一个满足这些条件的Java类:

  • 所有实例属性均为私有
  • 所有实例属性都有公共getter和setter
  • 该类具有无参数构造函数
  • 该类实现Serializable接口

我想知道的是如果我向Javabean添加方法,我们仍然可以将其称为Javabean吗?

例如我们可以说下面的类是JavaBean吗?

public class Person implements Serializable {
    private String name;
    public Person(){}
    public String getName(){...}
    public void setName(String name){...}
    public void sayHello(){}
}

2 个答案:

答案 0 :(得分:7)

是的,Java Bean绝对可以有行为。没有其他方法的Java Bean类的适用性非常有限,因为它们封装了没有有用行为的数据。

Oracle mentions this in one of their tutorials on Java Beans

  

bean的方法就是它可以做的事情。任何不属于属性定义的公共方法都是bean方法。在NetBeans等构建器工具的上下文中使用bean时,可以使用bean的方法作为应用程序的一部分。例如,你可以按下按钮来调用你的一个bean的方法。

答案 1 :(得分:2)

是的,java bean可以有其他功能。引入该约定以结构化方式访问属性并添加诸如否决之类的功能。它用于例如swing中的GUI组件,其中bean机制用于配置GUI元素。特别是在GUI编辑器中,需要动态访问未知属性。当然,这些GUI组件具有许多功能。限制使用条件的是DTO(数据传输对象),它只传输数据但没有其他功能。