反射获取对象成员的字段值getFields()和getDeclaredFields()的区别

getFields()只能获取public修饰的字段,包括父类的。

getDeclaredFields()只能获取自己声明的各种字段,包括public,private,protected

他们两个返回的都是一个field对象,或者field数组,想获取名称直接field.getName(),如果获取属性值field.get(object)

例如代码如下

/**
     * 将对象转换成map
     * @param obj
     * @return
     * @throws Exception
     */
    public static Map<String, Object> objectToMap(Object obj) throws Exception {
        if (obj == null) {
            return null;
        }
        Map<String, Object> map = new HashMap<String, Object>();
        Field[] declaredFields = obj.getClass().getDeclaredFields();
        for (Field field : declaredFields) {
            field.setAccessible(true);
            map.put(field.getName(), field.get(obj));
        }
        return map;
    }

 

  1. Class类 代表类的实体,在运行的Java应用程序中表示类和接口
  2. Field类 代表类的成员变量(成员变量也称为类的属性)
  3. Method类 代表类的方法
  4. Constructor类 代表类的构造方法
posted @ 2022-07-12 16:45  小样儿i  阅读(841)  评论(0)    收藏  举报