Can a JavaBean have methods besides getters and setters?
根据我在Internet中发现的定义,JavaBean是满足这些条件的Java类:
- 所有实例属性都是私有的
- 所有实例属性都有公共的getter和setter
- 类具有无参数构造函数
- 类实现可序列化接口
我想知道的是,如果我向JavaBean添加方法,我们还可以称它为JavaBean吗?
例如,我们可以说下面的类是JavaBean吗?
1 2 3 4 5 6 7 | public class Person implements Serializable { private String name; public Person(){} public String getName(){...} public void setName(String name){...} public void sayHello(){} } |
是的,Java bean肯定有行为。没有附加方法的Java bean类具有非常有限的适用性,因为它们封装了缺乏有用行为的数据。
Oracle在Java bean中的一个教程中提到了这一点:
A bean's methods are the things it can do. Any public method that is not part of a property definition is a bean method. When you use a bean in the context of a builder tool like NetBeans, you can use a bean's methods as part of your application. For example, you could wire a button press to call one of your bean's methods.
是的,Java bean可以有附加的功能。该约定被引入以结构化方式访问属性并添加否决等功能。例如,它用于Swing中的GUI组件,其中bean机制用于配置GUI元素。尤其是在GUI编辑器中,需要动态访问未知属性。当然,这些GUI组件有很多功能。如果限制到一组条件,您得到的是一个DTO(数据传输对象),它只传输数据,但没有附加功能。