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的属性叫只写属性(不常见)。

 

属性只需要定义gettersetter方法,不一定需要对应的字段

例如,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字段
    }
}

可以看出,gettersetter也是一种数据封装的方法。

 

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()方法带来的。

 总结

  1. JavaBean是指①属性字段都在private中;②属性字段的读写方法都在public中;这样的读写方法的名字为getXXXsetXXX;这样的类称为JavaBean
  2. 以上getXXXsetXXX方法都是针对普通变量而言,bool变量方法常命名为isXXX
  3. 把定义了gettersetter称为属性(Property/Attribution)。注意,属性只需要定义gettersetter方法,而不需要有实际的字段
  4. 枚举显示JavaBean的所有属性:Introspector.getBeanInfo()
posted @ 2021-05-03 11:19  ShineLe  阅读(91)  评论(0)    收藏  举报