java工具类-Java对象转换成Map

java工具类-Java对象转换成Mappackagecom.hwqh.hwqhuser.util;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.HashMap;importjava.util.Map;/***Map转换工具类*/publicclass…

大家好,又见面了,我是你们的朋友全栈君。

package com.hwqh.hwqhuser.util;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * Map转换工具类
 */
public class MapToolsUtil {
    public static void main(String[] args) throws Exception{
       /* User user=new User();
        user.setId(1L);
        Map<String, Object> stringObjectMap = javaBean2Map(user);
        System.out.println(stringObjectMap);
*/

      /*  Map map = new HashMap();
        map.put("id",1L);
        map.put("nickname","你好");
        User user = (User) mapJavaBean(User.class, map);
        System.out.println(user.getNickname()+user.getId());*/
    }

    /**
     * 将Object对象里面的属性和值转化成Map对象
     *
     * @return
     * @throws IllegalAccessException
     */
    public static Map<String, Object> javaBeanMap(Object javaBean) {
        Map<String, Object> map = new HashMap<>();
        Method[] methods = javaBean.getClass().getMethods(); // 获取所有方法
        for (Method method : methods) {
            if (method.getName().startsWith("get")) {
                String field = method.getName(); // 拼接属性名
                field = field.substring(field.indexOf("get") + 3);
                field = field.toLowerCase().charAt(0) + field.substring(1);
                Object value = null; // 执行方法
                try {
                    value = method.invoke(javaBean, (Object[]) null);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
                map.put(field, value);
            }
        }
        return map;
    }

    /**
     * Map转对象的方法
     */
  /*  public static Object mapJavaBean(Class<?> clazz, Map<String, Object> map) {
        Object javabean = null; // 构建对象
        try {
            javabean = clazz.newInstance();
            Method[] methods = clazz.getMethods(); // 获取所有方法
            for (Method method : methods) {
                if (method.getName().startsWith("set")) {
                    String field = method.getName(); // 截取属性名
                    field = field.substring(field.indexOf("set") + 3);
                    field = field.toLowerCase().charAt(0) + field.substring(1);
                    if (map.containsKey(field)) {
                        method.invoke(javabean, map.get(field));
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return javabean;
    } */

    /**
     * Map转对象的方法
     */
    public static Object mapJavaBean(Class<?> clazz, Map<String, String> map) {
        Object javabean = null; // 构建对象
        try {
            javabean = clazz.newInstance();
            Method[] methods = clazz.getMethods(); // 获取所有方法
            for (Method method : methods) {
                if (method.getName().startsWith("set")) {
                    String field = method.getName(); // 截取属性名
                    field = field.substring(field.indexOf("set") + 3);
                    field = field.toLowerCase().charAt(0) + field.substring(1);
                    if (map.containsKey(field)) {
                        method.invoke(javabean, map.get(field));
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return javabean;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140821.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月27日 上午8:20
下一篇 2022年5月27日 上午8:20


相关推荐

  • 哈夫曼编码详解——图解真能看了秒懂

    哈夫曼编码详解——图解真能看了秒懂直接上题目 已知字符集 a b c d e f 若各字符出现的次数分别为 6 3 8 2 10 4 则对应字符集中各字符的哈夫曼编码可能是 2 分 A 00 1011 01 1010 11 100B 00 100 110 000 0010 01C 10 1011 11 001D 0011 10 11 0010 01 000

    2026年3月20日
    2
  • HTML徽章效果制作与角标添加教程

    HTML徽章效果制作与角标添加教程

    2026年3月14日
    2
  • playbook安装docker

    playbook安装docker

    2021年6月1日
    145
  • Java BigDecimal类的一般使用、BigDecimal转double

    Java BigDecimal类的一般使用、BigDecimal转doubleBigDecimal 大据类 浮点型运算的时候直接加减乘除时可能会出现数据失真 精度问题 BigDecimal 可以解决浮点型运算数据失真的问题 doublea 0 1 doubleb 0 2 doublec a b System out println c 0 000004BigDec 类包 java math 创建一个 BigDecimal 对象 publicstat

    2026年3月19日
    2
  • Java锁的概念「建议收藏」

    Java锁的概念「建议收藏」一:悲观锁在Java中,synchronized和lock锁都是悲观锁。定义:悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改二:乐观锁定义:认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。如果这个数据没有被更新,当前线程将自己修改的数据成功写入。如果数据已经被其他线程更新,则根据不同的实现方式执行不同的操作(例如报错或者自动重试)。乐观锁在Java中.

    2022年7月7日
    25
  • python中format所有用法

    python中format所有用法平时只用参数匹配,偶尔看到别人的format用法楞住没反应过来,遂记下

    2022年7月3日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号