内省操作javabean属性,javabean Person类。
public class Person { private String name; private String password; private int age; public String getAb(){ return null; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import org.junit.Test; //使用内省API操作bean的属性 public class Demo1 { // 得到bean的所有属性 @Test public void test1() throws Exception { BeanInfo info = Introspector.getBeanInfo(Person.class, Object.class); PropertyDescriptor[] pds = info.getPropertyDescriptors(); for (PropertyDescriptor pd : pds) { System.out.println(pd.getName()); } } // 得到bean的指定属性:get @Test public void test2() throws Exception { Person p = new Person(); PropertyDescriptor pd = new PropertyDescriptor("age", Person.class); // 得到属性的写方法,为属性赋值 Method method = pd.getWriteMethod(); // setAge method.invoke(p, 45); // System.out.println(p.getAge()); // 获取属性值 method = pd.getReadMethod(); System.out.println(method.invoke(p, null)); } //获取当前操作属性的类型 @Test public void test3() throws Exception { Person p = new Person(); PropertyDescriptor pd = new PropertyDescriptor("age", Person.class); System.out.println(pd.getPropertyType()); } }