• Java 反射的应用 - 对象转Map


    普通的Java 对象转 Map 对象

    java 中 的反射,可以根据对象获取到类模板对象,
    进而获取到类模板中定义的属性和方法,
    并且可以实现对属性的赋值、方法的调用等动作。
    本文利用此特性,封装一个工具方法,将普通的Java对象转为Map对象。
    
    • 1
    • 2
    • 3
    • 4

    1.定义一个普通的Java类

    
    public class Book {
        private Integer id;
        private String name;
        private Double price;
    		
    	// 下面是 正常的 无参构造、有参构造、getter方法、setter方法、toString 方法
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.封装转换方法(核心)

     /**
         * 对象转 Map 的方法
         * @param obj
         * @return
         */
        public static Map<String,Object> covertObjectToMap(Object obj){
    
            //要返回的 map 对象
            Map<String,Object> objectMap = new HashMap<>();
            // 获取目标对象的类型
            Class<?> clazz = obj.getClass();
            // 获取 类 的所有声明的属性
            Field[] fields = clazz.getDeclaredFields();
            // 遍历属性,进行map对象的创建
            Arrays.stream(fields).forEach(field -> {
                // 属性爆破
                field.setAccessible(true);
                try {
                    // map中存储属性及属性值
                    objectMap.put(field.getName(),field.get(obj));
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            });
            //返回map
            return objectMap;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    3.测试使用

    import java.lang.reflect.Field;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    
    public class aa {
    
        public static void main(String[] args) {
        	
        	// 创建一个对象
            Book book = new Book(100, "第一本书", 20.05d);
            // 对象转map
            Map<String, Object> bookMap = covertObjectToMap(book);
            // 输出map
            System.out.println("bookMap = " + bookMap);
        }
    
    
        /**
         * 对象转 Map 的方法 
         * @param obj
         * @return
         */
        public static Map<String,Object> covertObjectToMap(Object obj){
    
            //要返回的 map 对象
            Map<String,Object> objectMap = new HashMap<>();
            // 获取目标对象的类型
            Class<?> clazz = obj.getClass();
            // 获取 类 的所有声明的属性
            Field[] fields = clazz.getDeclaredFields();
            // 遍历属性,进行map对象的创建
            Arrays.stream(fields).forEach(field -> {
                // 属性爆破
                field.setAccessible(true);
                try {
                    // map中存储属性及属性值
                    objectMap.put(field.getName(),field.get(obj));
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            });
            //返回map
            return objectMap;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    4.运行结果

    bookMap = {price=20.05, name=第一本书, id=100}
    
    • 1

    通过打印看到,对象转map成功!

  • 相关阅读:
    Java中String类型的hashCode实现
    小程序容器解决OA系统数字化升级难题?
    Java IO流处理 面试题汇总
    音视频—图像基础
    Java面试笔记:Java线程安全的集合类有哪些?线程不安全的集合类有哪些?ArrayList为什么会发生并发修改异常?
    通过使用简单的JavaScript的效果实现点击图片背景图片更换的效果
    什么是继承?什么是组合?为何说要多用组合少用继承?
    2023国赛数学建模C题思路代码 - 蔬菜类商品的自动定价与补货决策
    JVM-五大区
    Android原生实现控件点击弹起效果方案(API28及以上)
  • 原文地址:https://blog.csdn.net/qq_39505245/article/details/133277236