原创于 【模棱博客】
基于 Spring Framework 源码
BeanUtils.getPropertyDescriptor
PropertyDescriptor 描述 Java Bean 通过一对存储器方法导出的一个属性。
PropertyEditor | createPropertyEditor(Object bean) 使用当前属性编辑器类构造一个属性编辑器实例。 |
boolean | equals(Object obj) 将此 PropertyDescriptor 与指定对象进行比较。 |
Class<?> | getPropertyEditorClass() 获得已为此属性注册的任何显式 PropertyEditor Class。 |
Class<?> | getPropertyType() 获得属性的 Class 对象。 |
Method | getReadMethod() 获得应该用于读取属性值的方法。 |
Method | getWriteMethod() 获得应该用于写入属性值的方法。 |
int | hashCode() 返回对象的哈希码。 |
boolean | isBound() 更新 "bound" 属性将导致更改该属性时激发 "PropertyChange" 事件。 |
boolean | isConstrained() 试图更新 "Constrained" 属性将导致更改该属性时激发 "VetoableChange" 事件。 |
void | setBound(boolean bound) 更新 "bound" 属性将导致更改该属性时激发 "PropertyChange" 事件。 |
void | setConstrained(boolean constrained) 试图更新 "Constrained" 属性将导致更改该属性时激发 "VetoableChange" 事件。 |
void | setPropertyEditorClass(Class<?> propertyEditorClass) 通常 PropertyEditor 是使用 PropertyEditorManager 找到的。 |
void | setReadMethod(Method readMethod) 设置应该用于读取属性值的方法。 |
void | setWriteMethod(Method writeMethod) 设置应该用于写入属性值的方法。 |
public class test {
public static void BeanUtils() {
PropertyDescriptor name1 = BeanUtils.getPropertyDescriptor(vip.class, "name");
Method readMethod = name1.getReadMethod(); Method writeMethod = name1.getWriteMethod();
System.out.println(readMethod.getName()); System.out.println(writeMethod.getName());
PropertyDescriptor sex1 = BeanUtils.getPropertyDescriptor(vip.class, "sex");
Method readMethod1 = sex1.getReadMethod(); Method writeMethod1 = sex1.getWriteMethod();
System.out.println(readMethod1.getName()); System.out.println(writeMethod1.getName());
try {
Class<?> declaringClass = readMethod1.getDeclaringClass();
Constructor<?> declaredConstructor = declaringClass.getDeclaredConstructor();
Object o = BeanUtils.instantiateClass(declaredConstructor);
System.out.println(o);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
BeanUtils();
}
}
vip 类
public class test {
public static void BeanUtils() {
PropertyDescriptor name1 = BeanUtils.getPropertyDescriptor(vip.class, "name");
Method readMethod = name1.getReadMethod(); Method writeMethod = name1.getWriteMethod();
System.out.println(readMethod.getName()); System.out.println(writeMethod.getName());
PropertyDescriptor sex1 = BeanUtils.getPropertyDescriptor(vip.class, "sex");
Method readMethod1 = sex1.getReadMethod(); Method writeMethod1 = sex1.getWriteMethod();
System.out.println(readMethod1.getName()); System.out.println(writeMethod1.getName());
try {
Class<?> declaringClass = readMethod1.getDeclaringClass();
Constructor<?> declaredConstructor = declaringClass.getDeclaredConstructor();
Object o = BeanUtils.instantiateClass(declaredConstructor);
System.out.println(o);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
BeanUtils();
}
}
http://www.flammulina.com/2018/09/24/beanutils-getpropertydescriptor/