zoukankan      html  css  js  c++  java
  • 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;
        }
        
  • 相关阅读:
    [P4721] 【模板】分治 FFT
    [GYM102452E] Erasing Numbers
    [LOJ6220] sum
    [CF776B] Sherlock and His Girlfriend
    [LOJ6087] 毒瘤题
    [LOJ2612] 花匠
    [LOJ529] 自然语言
    [CTSC2017] 吉夫特
    [LOJ6671] EntropyIncreaser 与 Minecraft
    [LOJ3196] 挂架
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/5121507.html
Copyright © 2011-2022 走看看