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


相关推荐

  • Django(49)drf解析模块源码分析[通俗易懂]

    Django(49)drf解析模块源码分析[通俗易懂]前言上一篇分析了请求模块的源码,如下:definitialize_request(self,request,*args,**kwargs):"""Retu

    2022年8月7日
    4
  • 台式计算机网线接口松动怎么办,台式电脑网卡坏了怎么修复(图文)「建议收藏」

    台式计算机网线接口松动怎么办,台式电脑网卡坏了怎么修复(图文)「建议收藏」电脑网卡要是坏了,就无法正常上网。网卡对于主机的网络连接来说非常重要,遇到网卡坏了连接不上网络很麻烦,如果重新安装一个或者是拿去修又成本高。有什么好办法可以怎么修复?大家可以参考下文操作。具体方法如下:1、如下图,为电脑网卡外口,即为插网线的地方。2、同事的网卡坏了,没有专业工具,没有配件,怎么办?一些质量差点的网卡或者网卡用的时间长了,里面的金属触片很容易失去弹性。引发接触不良,这时候一种最简单…

    2022年6月26日
    244
  • BaseAdapter导致notifyDataSetChanged()无效的四个原因及处理方法

    BaseAdapter导致notifyDataSetChanged()无效的四个原因及处理方法前一段时间在做一个项目的时候遇到了一个关于BaseAdapter的notifyDataSetChanged()方法无效问题,当时在网上搜了一个解决方法,今天又遇到了一个类似的问题,我在这里做个记录,防止以后再次发生,或者其他朋友再次遇到。一、ScrollView中嵌套ListView或GridView原因:两个的滚动监听冲突解决方法:重写ListView或GridViewpackagecom.m

    2022年6月18日
    24
  • eclipse集成svn使用_svn常用命令

    eclipse集成svn使用_svn常用命令在新版本的Eclipse中是没有svn这个插件,如果我们要用,不得不自己去集成SVN(我不知道老版当中有没有这个插件,没太注意这个问题),今天给大家带来2种集成的方式,一种是在线集成,另一种否是离线集成。这也是我目前知道的2种方案,我也不清楚还有没有其它方案。1.在线集成:Name:这个可以任意添,没有硬性规定,最好见名知意。Location:http://subclipse.tigris.org…

    2022年9月26日
    2
  • Springboot引入本地jar包,并通过maven把项目成功打包成jar包部署[通俗易懂]

    Springboot引入本地jar包,并通过maven把项目成功打包成jar包部署[通俗易懂]引入钉钉的sdk打包到线上,各种报错:ClassNofFoundException…第一步:将jar包放到resource的lib文件夹下:第二部:在pom文件中引入:第三部:继续修改pom文件的打包插件配置:<includeSystemScope>true</includeSystemScope>打包时候IDEA还是会报警告,不用管它;…

    2022年6月29日
    23
  • JS一维数组转化为三维数组有这个方法就够了

    JS一维数组转化为三维数组有这个方法就够了一个方法搞定 js 一维数组转化三维数组

    2025年8月23日
    0

发表回复

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

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