zoukankan      html  css  js  c++  java
  • 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()方法带来的。

  • 相关阅读:
    使用 Hibernate 完成 HibernateUtils 类 (适用于单独使用Hibernate或Struts+Hibernate)
    python 面向对象(成员,静态,类)的(变量,方法)区别
    python 2.7 字符串处理
    python 2 range, list, and set
    python debug小技巧&&工程能力的几点建议
    python 数据类型转换
    python 2 控制台传参,解包,编码问题初探
    带搜索图标的文本框
    Jquery 实现标签切换效果
    javascript 获取当前日期 月份 时间
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/12501415.html
Copyright © 2011-2022 走看看