zoukankan      html  css  js  c++  java
  • 廖雪峰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()获取属性列表
  • 相关阅读:
    Yeelink 初探
    Macbook被格式化之后
    linux 代码分析工具 gprof
    Writing Clean Code 读后感
    0 bug 读后感
    STM32 控制红外线收发
    HomeKit 与老旧设备
    树莓派控制红外线收发
    苹果没法删除部分照片的问题
    route处理
  • 原文地址:https://www.cnblogs.com/csj2018/p/10295094.html
Copyright © 2011-2022 走看看