直接上代码。
?
package com.test.bean; public class Person { private String name; private int age; private String sex; 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; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
package com.test.bean;
import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import org.apache.commons.beanutils.BeanUtils; public class BeanMain { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { Class<?> beanClass = Class.forName("com.test.bean.Person"); Object obj = beanClass.newInstance(); // 第一种方法 String propertyName = "age"; PropertyDescriptor pd = new PropertyDescriptor(propertyName, beanClass);// 按照属性名称得到属性相关类 Method writer = pd.getWriteMethod();// 得到写的方法 Method reader = pd.getReadMethod();// 得到读的方法 writer.invoke(obj, 22);// 写方法操作 Object age = reader.invoke(obj);// 读方法操作 System.out.println(age); // 第二种方法 BeanInfo beanInfo = Introspector.getBeanInfo(beanClass); PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor pd1 : pds) { // System.out.println(pd1.getName()); if (pd1.getName().equals("name")) { writer = pd1.getWriteMethod();// 得到写的方法 reader = pd1.getReadMethod();// 得到读的方法 writer.invoke(obj,"haoran_10");// 写方法操作 Object name = reader.invoke(obj);// 读方法操作 System.out.println(name); break; } } //第三种方法:通过开源jar包,优点:自动转换类型,支持级联操作 BeanUtils.setProperty(obj, "sex", "man"); System.out.println(BeanUtils.getProperty(obj, "sex")); } }?