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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • WPF 入门教程WrapPanel介绍「建议收藏」

    WPF 入门教程WrapPanel介绍「建议收藏」WrapPanel将定位每个子控件的旁边,另外,水平方向(默认值)或垂直,直到没有更多的空间,在那里将换到下一行,然后继续。当您想要一个垂直或水平列表控件在没有更多空间时自动换行时使用它。当WrapPanel使用Horizo​​ntal方向时,子控件将被赋予相同的高度,基于最高的项目。当WrapPanel为垂直方向时,子控件将被赋予相同的宽度,基于最宽的项目。在第一个示例中,我们将检查具有默认(水平)方向的WrapPanel:<Windowx:Class=”WpfTu

    2022年7月23日
  • idea激活码2022破解方法

    idea激活码2022破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
  • 深度图像基础知识(一)

    深度图像基础知识(一)深度图像(depthimage)也被称为距离影像(rangeimage),是指将从图像采集器到场景中各点的距离(深度)作为像素值的图像,它直接反映了景物可见表面的几何形状。深度图像经过坐标转换可以计算为点云数据,有规则及必要信息的点云数据也可以反算为深度图像数据。深度数据流所提供的图像帧中,每一个像素点代表的是在深度感应器的视野中,该特定的(x,y)坐标处物体到离摄像头平面最近的

    2022年4月25日
  • rabbit mq使用_rabbitmq部署

    rabbit mq使用_rabbitmq部署原文转载:http://blog.csdn.net/whycold/article/details/41119807推荐文章:SpringBoot+RabbitMq的使用一、简介MQ全称为MessageQueue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息…

    2022年10月3日
  • 爬虫之上传文件,request如何上传文件

    爬虫之上传文件,request如何上传文件

    2022年2月20日
  • 数学速算法_三年级数学时分秒换算口诀+精选思维奥数题整理汇总[通俗易懂]

    数学速算法_三年级数学时分秒换算口诀+精选思维奥数题整理汇总[通俗易懂]文末有打印方法时间单位换算口诀1世纪=100年1年=12月大月(31天)有:1月,3月,5月,7月,8月,10月,12月小月(30天)的有:4月,6月,9月,11月平年2月28天,闰年2月29天平年全年365天,闰年全年366天1日=24小时1时=60分1分=60秒1时=3600秒时间之间的进率都是601时=60分1分=60秒…

    2022年6月15日

发表回复

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

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