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());
}
}