一、Introspector介绍
内省主要为了剖析JavaBean;
JavaBean:
(1)一个public的类;
(2)主要用于存储数据;
(3)getter & setter方法;
需要涉及Inrospector,BeanInfo,PropertyDescriptor等类;
二、Introspector开发
package org.xiazdong.introspector; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import org.junit.Test; import org.xiazdong.Person; public class IntrospectorDemo01 { //获得person类的所有bean属性 @Test public void test1() throws Exception{ BeanInfo info = Introspector.getBeanInfo(Person.class); PropertyDescriptor[] pds = info.getPropertyDescriptors(); for(PropertyDescriptor pd:pds){ System.out.println(pd.getPropertyType()+" "+pd.getName()); } } //获得Person(不包含Object类)的所有bean属性 @Test public void test2() throws Exception{ BeanInfo info = Introspector.getBeanInfo(Person.class,Object.class); PropertyDescriptor[] pds = info.getPropertyDescriptors(); for(PropertyDescriptor pd:pds){ System.out.println(pd.getPropertyType()+" "+pd.getName()); } } //设置Person的age属性 @Test public void test3() throws Exception{ Person p = new Person(); PropertyDescriptor pd = new PropertyDescriptor("age", Person.class); Method method = pd.getWriteMethod(); method.invoke(p, 20); System.out.println(p.getAge()); } //调用Person的getAge() @Test public void test4() throws Exception{ Person p = new Person("xiazdong",30); PropertyDescriptor pd = new PropertyDescriptor("age", Person.class); Method method = pd.getReadMethod(); System.out.println(method.invoke(p, null)); } }