根据字段名得到一个Description对象,这个对象能得到字段的类型,字段的读写方法
person.java
package com.xiaozhi.introspector;
//该类共有5个属性
public class Person {
private String name;
private String password;
private int age;
public void setAb(int a){
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public void setAge(int age) {
this.age = age;
}
}
Test.java
package com.xiaozhi.introspector;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) throws Exception {
//得到所有的属性
// // 这样得到的属性包括Object的属性:Class
// BeanInfo beanInfo1 = Introspector.getBeanInfo(Person.class);
// // 去除Object的属性
// BeanInfo beanInfo2 = Introspector.getBeanInfo(Person.class,Object.class);
// PropertyDescriptor[] descriptors = beanInfo1.getPropertyDescriptors();
// for(PropertyDescriptor descriptor:descriptors)
// {
// System.out.println(descriptor.getName());
// }
//操作制定属性:age
Person person=new Person();
PropertyDescriptor descriptor=new PropertyDescriptor("age",Person.class);
//获取属性的类型
System.out.println(descriptor.getPropertyType());
//得到属性的写方法,为属性赋值
Method method= descriptor.getWriteMethod();
method.invoke(person, 22);//为age赋值22
//得到属性的读方法
method=descriptor.getReadMethod();
System.out.println(method.invoke(person, null));//读取age的值22
}
}