符合以下命名规范的class被成为JavaBean

  • private 类型的field
  • 针对这个field的get和set方法
public class Person {
    private String name;
    private int age;
    private boolean child;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    //isChild方法没有Child字段,而是根据age,实时返回
    public boolean isChild() {
        return age < 6;
    }
}
注意: * 对于boolean方法,get方法是is * 属性只需要定义getter/setter方法,不一定需要相应的字段

2.JavaBean属性

通常把一组对应的getter和setter称为属性property

  • name属性:
    * 对应读方法getName()
    * 对应写方法setName()
  • 对于只有getter的属性成为只读属性,例如age
  • 对于只有setter的属性成为只写属性,例如isChild

3.JavaBean的作用:

方便IED工具读写属性
传递数据
枚举属性

public class Main {
    public static void main(String[] args) throws Exception{
        BeanInfo bi = Introspector.getBeanInfo(Person.class);
        for(PropertyDescriptor pd:bi.getPropertyDescriptors()){
            printPropertyDescriptor(pd);
        }
    }
    static void printPropertyDescriptor(PropertyDescriptor pd){
        String name = pd.getName();
        Class<?> clazz = pd.getPropertyType();
        if (clazz == null || name.equals("class")){
            return;
        }
        Method read = pd.getReadMethod();
        Method write = pd.getWriteMethod();
        System.out.println("===== PropertyDescriptor=====");
        System.out.println("Name: "+ name);
        System.out.println("Type: " + clazz.getName());
        System.out.println("Read method: " + (read == null ? "null":read.getName()));
        System.out.println("Write menthod: " + (write == null ? "null":write.getName()));
    }
}
廖雪峰Java2面向对象编程-6Java核心类-4JavaBean

4.总结:

  • JavaBean是一种符合命名规范的class
  • JavaBean通过getter/setter来定义属性
  • 属性是一种通用的叫法,并非Java语法规定
  • 可以利用IDE快速生成getter/setter
  • 使用Introspector.getBeanIfo()获取属性列表

相关文章:

  • 2021-06-20
  • 2021-05-24
  • 2021-10-25
  • 2021-08-18
  • 2021-07-22
  • 2021-06-05
  • 2021-07-03
  • 2021-07-16
猜你喜欢
  • 2021-11-09
  • 2021-07-12
  • 2021-06-21
  • 2021-09-26
  • 2021-06-14
  • 2021-12-31
  • 2021-09-06
相关资源
相似解决方案