廖雪峰Java2面向对象编程-6Java核心类-4JavaBean

1.JavaBean定义

符合以下命名规范的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()));
    }
}

4.总结:

  • JavaBean是一种符合命名规范的class
  • JavaBean通过getter/setter来定义属性
  • 属性是一种通用的叫法,并非Java语法规定
  • 可以利用IDE快速生成getter/setter
  • 使用Introspector.getBeanIfo()获取属性列表
posted on 2019-01-20 15:35  singleSpace  阅读(186)  评论(0编辑  收藏  举报