直接上代码。
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"));
}
}