反射获取对象成员的字段值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 @   小样儿i  阅读(801)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示