java的内省(introspector)
package com.wzh.test.introspector; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import org.junit.Test; //使用内省API操作Bean的属性 public class Demo1 { @Test public void test() throws Exception{ // BeanInfo info=Introspector.getBeanInfo(Person.class); // BeanInfo info=Introspector.getBeanInfo(Class.forName("com.wzh.test.introspector.Person")); BeanInfo info=Introspector.getBeanInfo(Person.class,Object.class); PropertyDescriptor[] pds=info.getPropertyDescriptors(); for(PropertyDescriptor pd : pds){ System.out.println(pd.getName()); } } @Test public void test2() throws Exception{ Person p=new Person(); PropertyDescriptor pd=new PropertyDescriptor("age", Person.class); Method m=pd.getWriteMethod(); m.invoke(p,45); System.out.println("getAge:"+p.getAge()); } //获取当前操作的属性的类型 @Test public void test3() throws IntrospectionException{ Person p=new Person(); PropertyDescriptor pd=new PropertyDescriptor("age", Person.class); System.out.println(pd.getPropertyType()); } }