• Java核心类——JavaBean


    在Java中,有很多class的定义都符合这样的规范:
    若干private实例字段;
    通过public方法来独写实例字段;
    之前获取和设置字段都是以以下方式:

    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 Type getXyz()
    public void setXyz(Type value)

     那么这种class被称为JavaBean。

    上面的字段是xyz,那么读写方法分别以get和set开头,
    并且后接大写字母开头的字段名Xyz。

    还有一种叫做boolean,它的读方法一般命名为isXyz():

    public boolean isChild()
    public void setChild(boolean value)

    我们通常把一组对应的读方法(getter)和写方法(setter)称为属性(property).
      对应的读方法是 String getName()
      对应的写方法是 setName(String)
    只有getter的属性称为只读属性(read-only),例如,定义一个age只读属性:
      对应的读方法是int getAge()

    JavaBean的作用
    JavaBean主要用来传递数据,即把一组数据组合成一个JavaBean便于传输。
    此外,JavaBean可以方便被IDE工具分析,生成独写属性的代码,主要用在图形接面的可视化设计中。

    枚举JavaBean属性
    要枚举一个JavaBean属性,可以直接使用Java核心库Inrospector:

    package com.imooc.iexecption;
    
    import java.beans.BeanInfo;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    
    class Person {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
    
    
    public class catchExample2 {
        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());
            }
        }
    }
    
    // 结果
    //age
    //public int com.imooc.iexecption.Person.getAge()
    //public void com.imooc.iexecption.Person.setAge(int)
    
    //class
    //public final native java.lang.Class java.lang.Object.getClass()
    //        null 
    
    //name
    //public java.lang.String com.imooc.iexecption.Person.getName()
    //public void com.imooc.iexecption.Person.setName(java.lang.String)

    通过上述代码,可以列出所有的属性,以及对应的读写方法。
    注意class属性Object继承的getClass()方法带来的。

  • 相关阅读:
    实验一
    MVVM Light Toolkit 学习
    配置mongodb分片群集(sharding cluster)
    【silverlight】web发布方法
    MongoDb数据库设计
    【解决方案】添加web服务失败:下载“http://localhost:2540/Service.asmx”时出错。无法生成***类型
    Codeforces #380 div2 C(729C) Road to Cinema
    Codeforces #380 div2 B(729B) Spotlights
    数据挖掘项目总结
    南方电网用电时间序列分析
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/12501415.html
Copyright © 2020-2023  润新知