java-读取类中的属性名称和值

方法

 

    /**
     * 获取类中的所有属性明名称和值(因涉及到可能会是继承关系的父类,所以从f中去属性名称,从f2中取值,两个可以一样,也可以使父类)
     * @param f:读取属性类(如果取父类的,则这里为父类)
     * @param o:取值类(如果取父类的,则这里为子类)
     * @return
     */
    public static Map<String, Object> readClassFileAllComponentsName(Object f,Object f2) {
        Map<String, Object> map = new HashMap<String, Object>();
        if (f == null)
            return map;
        Field[] fields = f.getClass().getDeclaredFields();
        for (int i = 0, len = fields.length; i < len; i++) {
            try {
                // 对于每个属性,获取属性名
                String varName = fields[i].getName();
                // 获取原来的访问控制权限
                boolean accessFlag = fields[i].isAccessible();
                // 修改访问控制权限
                fields[i].setAccessible(true);
                // 获取在对象f中属性fields[i]对应的对象中的变量
                Object o = fields[i].get(f2);
                map.put(varName, o);
                //System.out.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);
                // 恢复访问控制权限
                fields[i].setAccessible(accessFlag);
            } catch (IllegalArgumentException ex) {
                ex.printStackTrace();
            } catch (IllegalAccessException ex) {
                ex.printStackTrace();
            }
        }
        return map;
    }
    

 

posted @ 2016-01-11 15:50  243573295  阅读(2194)  评论(0编辑  收藏  举报