一、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屬性@Testpublic 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屬性@Testpublic 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屬性@Testpublic 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()@Testpublic 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));}}