PropertyDescriptor 类表示 JavaBean 类通过存储器导出一个属性。
用法:
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public static void setProperty(Object obj, String propertyName, Object value) {// 对象,字段名,值
Class clazz = obj.getClass();// 获取对象的类型
PropertyDescriptor pd;
try {
pd = new PropertyDescriptor(propertyName, clazz);
Method setMethod = pd.getWriteMethod();// 从属性描述器中获取 set 方法
try {
setMethod.invoke(obj, value);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} // invoke是执行set
} catch (IntrospectionException e) {
e.printStackTrace();
}
}
public static Object getProperty(Object obj, String propertyName) {
Class clazz = obj.getClass();// 获取对象的类型
PropertyDescriptor pd;
Object val = "";
try {
pd = new PropertyDescriptor(propertyName, clazz);
Method getMethod = pd.getReadMethod();// 从属性描述器中获取 get 方法
try {
val = getMethod.invoke(obj);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
} catch (IntrospectionException e) {
e.printStackTrace();
} // 获取 clazz 类型中的 propertyName 的属性描述器
return val;// 返回值
}