package casic.cn.test1;
public class Persion {
public String name;
public int age;
public Persion(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package casic.cn.test1;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
public class IntroSpectorTest {
public static void main(String[] args) throws Exception {
Persion p = new Persion("小明", 26);
String name = "name";
PropertyDescriptor pd = new PropertyDescriptor(name, p.getClass());
Method methodGetName = pd.getReadMethod();
Object retVal = methodGetName.invoke(p);
System.out.println(retVal);
PropertyDescriptor pd2 = new PropertyDescriptor(name, p.getClass());
Method methodSetName = pd.getWriteMethod();
methodSetName.invoke(p,"小紅");
System.out.println(p.getName());
System.out.println(getProperty(p, name));
}
public static Object getProperty(Object bean, String propertyName) throws Exception {
Object retVal = null;
BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for(PropertyDescriptor pd : pds) {
if(pd.getName().equals(propertyName)) {
Method method = pd.getReadMethod();
retVal = method.invoke(bean);
}
}
return retVal;
}
}
Introspector 类
BeanInfo 类
PropertyDescriptor 类