hoge66的专栏

-----------------------看到专栏,偷着笑!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

getFields()与getDeclaredFields()区别

Posted on 2017-03-08 13:30  hehoge  阅读(304)  评论(0编辑  收藏  举报

getFields()与getDeclaredFields()区别:getFields()只能访问类中声明为公有的字段,私有的字段它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法  

getMethods()与getDeclaredMethods()区别:getMethods()只能访问类中声明为公有的方法,私有的方法它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法  

getConstructors()与getDeclaredConstructors()区别:getConstructors()只能访问类中声明为public的构造函数.getDeclaredConstructors()能访问类中所有的构造函数,与public,private,protect无关 

 

/**
     * 参数验证 执行.
     * <p>
     * ParamValide注释 解析实施
     * </p>
     * 
     * @param object
     *            待验证对象
     * @throws AdapterException
     *             基本验证错误
     */
    public static void valid(Object object) throws AdapterException {
        if (object == null) {
            return;
        }
        // 获取object的类型
        Class<? extends Object> clazz = object.getClass();
        // 获取该类型声明的成员
        Field[] fields = clazz.getDeclaredFields();

        // 遍历属性
        for (Field field : fields) {

            // 对于private私有化的成员变量,通过setAccessible来修改器访问权限
            field.setAccessible(true);

            validate(field, object);
            // 重新设置会私有权限
            field.setAccessible(false);
        }
    }