2021.5.3:JavaBean——getXYZ与setXYZ方法
什么是JavaBean
在Java中,有很多class的定义都符合这样的规范:
- 若干private实例字段;
- 通过public方法来读写实例字段。
例如:
class Person{ private String name; private int age; public String getName(){return this.name;} public void setName(){this.name=name;} public int getAge(){return this.age;} public void setAge(){this.age=age;} }
如果读写方法符合以下命名规范:
//读方法 public Type getXyz(); //写方法 public void setXyz(Type value);
那么这种class被称为JavaBean。读写方法分别以get和set开头,不过这是对一般类型变量的读写方法,但是boolean字段比较特殊,它的读方法一般命名为isXyz():
//读方法 public boolean isChild(); //写方法 public void setChild(boolean value);
通常把同时一组读方法(getter)和写方法(setter)称为属性(Property/Attribution)。只有getter的属性叫只读属性(常见),只有setter的属性叫只写属性(不常见)。
属性只需要定义getter、setter方法,不一定需要对应的字段
例如,child只读属性的定义如下:
public class Person { private String name; private int age; public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } public boolean isChild() { return age <= 6; //原文中并没有Child字段 } }
可以看出,getter与setter也是一种数据封装的方法。
JavaBean的作用
JavaBean主要用来传递数据,即把一组数据组合成一个JavaBean便于传输,主要用于图形界面的可视化设计中。
枚举显示JavaBean的所有属性
要枚举一个JavaBean的所有属性,可以直接使用Java核心库提供的Introspector类:
方法:Introspector.getBeanInfo()
import java.beans.*; public class Main { public static void main(String[] args) throws Exception{ BeanInfo info = Introspector.getBeanInfo(Person.class); for (PropertyDescriptor pd:info.getPropertyDescriptors()){ System.out.println(pd.getName()); System.out.println(" "+pd.getReadMethod()); System.out.println(" "+pd.getWriteMethod()); } } }
在Java 16中,如果要使用getBeanInfo方法,必须在main方法之后使用throws Exception抛出异常,否则编译时会报错:未报告的异常错误,必须对其进行捕获或声明以便抛出
运行上述代码,可以列出所有的属性以及对应的读写方法。注意class属性是从Object继承而来的getClass()方法带来的。
总结
- JavaBean是指①属性字段都在private中;②属性字段的读写方法都在public中;这样的读写方法的名字为getXXX与setXXX;这样的类称为JavaBean。
- 以上getXXX与setXXX方法都是针对普通变量而言,bool变量的读方法常命名为isXXX
- 把定义了getter与setter称为属性(Property/Attribution)。注意,属性只需要定义getter与setter方法,而不需要有实际的字段。
- 枚举显示JavaBean的所有属性:Introspector.getBeanInfo()

浙公网安备 33010602011771号