PropertyDescriptor和getMethod的区别

PropertyDescriptor

PropertyDescripto是用于自动获取字段的Getter和Setter
这个可以从它的构造方法可以看出来,

 PropertyDescriptor(String propertyName, Class<?> beanClass,
                String readMethodName, String writeMethodName)

后面两个参数 并不是必须的,第一个参数是属性名称,第二个参数类的类型,就是你要传入的bean的class。

 PropertyDescriptor property=new PropertyDescriptor("sex",emp);
 Method getSex=property.getReadMethod();
 System.out.println(getSex.toString());
 String sex= (String) getSex.invoke(emplo3,null);
 System.out.println(sex);

上面这个例子就是获取emp这个bean的field字段的getSex()方法。然后得到一个Method 变量。调用invoke方法就行

getMethod

        String pro="get"+"Sex";
        Method getSex=emp.getMethod(pro,null);
        System.out.println(getSex.toString());
        String sex= (String) getSex.invoke(emplo3,null);
        System.out.println(sex);

这里可以看出来了 它们最大的区别是 PropertyDescriptor会自己替我们完成 String pro=”get”+”Sex”; 并且他只能获取字段的Setter和Getter方法。 注意 bean里面的Setter和Getter必须为public
而getMethod方法可以获取本身类及父类定义的public方法。

果然你想获取当前类的其他不是public方法 ,可以使用getDeclaredMethod

猜你喜欢

转载自blog.csdn.net/a1064072510/article/details/81735149