实现Java 对象转Map 不再怕继承了

/**
     * 获取一个类和其父类的全部属性
     * 
     * @param clazz
     * @return
     */
    public static List<Field> findAllFieldsOfSelfAndSuperClass(Class clazz) {
        Field[] fields = null;
        List fieldList = Lists.newArrayList();
        while (true) {
            if (clazz == null) {
                break;
            } else {
                fields = clazz.getDeclaredFields();
                for (int i = 0; i < fields.length; i++) {
                    fieldList.add(fields[i]);
                }
                clazz = clazz.getSuperclass();
            }
        }
        return fieldList;
    }.net

 

 

/**
     * 将对象转Map 
     * @param obj 待转对象
     * @return
     */
   public static  Map<String, Object> getValueMap(Object obj) {  
        
        Map<String, Object> map = new HashMap<String, Object>();  
        // System.out.println(obj.getClass());  
        // 获取f对象对应类中的全部属性域  
        List<Field> list=findAllFieldsOfSelfAndSuperClass(obj.getClass());
           for (Field field : list) {
          
            String varName = field.getName();  
            try {  
                // 获取原来的访问控制权限  
                boolean accessFlag = field.isAccessible();  
                // 修改访问控制权限  
                field.setAccessible(true);  
                // 获取在对象f中属性fields[i]对应的对象中的变量  
                Object o = field.get(obj);  
                if (o != null)  
                    map.put(varName, o);  
                // System.out.println("传入的对象中包含一个以下的变量:" + varName + " = " + o);  
                // 恢复访问控制权限  
                field.setAccessible(accessFlag);  
            } catch (IllegalArgumentException ex) {  
                ex.printStackTrace();  
            } catch (IllegalAccessException ex) {  
                ex.printStackTrace();  
            }  
        }  
        return map;  
  
    }  对象

相关文章
相关标签/搜索