内省

来源:互联网 发布:南粤大数据 编辑:程序博客网 时间:2024/05/21 14:53

其实,我也不太懂内省是什么。估计是将数据封装到对象当中那样子吧!等有时间再来详细了解它吧…
所以,我就直接甩代码吧:

package com.descriptor;import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;/** * Description: * 内省 *  * @author lee * */public class DescriptorDemo {    /**     * Description:     * 使用属性描述器,获取对象的setter或getter方法     *      * */    public static void test1()throws  Exception{        Person p = new Person();        //属性描述器        PropertyDescriptor descriptor = new PropertyDescriptor("id",Person.class);        //获取属性setter方法        Method setMethod = descriptor.getWriteMethod();        //获取属性个体特然方法        Method getMethod = descriptor.getReadMethod();        //调用setter方法设置id值        setMethod.invoke(p, 1);        System.out.println(p.getId());    }    /**     * Description:     * 获取所有属性描述器     *      * */    public static void test2()throws Exception {        //Intropect内省类        BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);        //通过BeanInfo获取所有属性描述器        PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors();        //输出所有属性描述器        for(PropertyDescriptor descriptor:descriptors){            System.out.println(descriptor);        }    }    /**     * Description:     * 主方法     *      * */    public static void main(String[] args)throws Exception  {        test1();        test2();    }}/** * Description: * 一个javabean类 *  * @author lee * */class Person{    private int id;    private String name;    /**     * Description:     * 默认构造器     *      * */    public Person(){}    //getter,setter方法    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}



任性!不解释!(手动滑稽)

0 0