BeanUtils.getPropertyDescriptor

原创于 【模棱博客】

基于 Spring Framework 源码

BeanUtils.getPropertyDescriptor

PropertyDescriptor 描述 Java Bean 通过一对存储器方法导出的一个属性。

BeanUtils.getPropertyDescriptor_第1张图片

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)
设置应该用于写入属性值的方法。

BeanUtils.getPropertyDescriptor_第2张图片

 

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/

 

你可能感兴趣的:(源码)