原文:http://www.open-open.com/code/view/1423280939826

/** * 使用org.apache.commons.beanutils进行转换 */
class A {  public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {    if (map == null)  return null;  Object obj = beanClass.newInstance();  org.apache.commons.beanutils.BeanUtils.populate(obj, map);  return obj;  }    public static Map<?, ?> objectToMap(Object obj) {  if(obj == null)  return null;   return new org.apache.commons.beanutils.BeanMap(obj);  }    }  /** * 使用Introspector进行转换 */
class B {  public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {    if (map == null)   return null;    Object obj = beanClass.newInstance();  BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());    PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();    for (PropertyDescriptor property : propertyDescriptors) {  Method setter = property.getWriteMethod();    if (setter != null) {  setter.invoke(obj, map.get(property.getName()));   }  }  return obj;  }    public static Map<String, Object> objectToMap(Object obj) throws Exception {    if(obj == null)  return null;      Map<String, Object> map = new HashMap<String, Object>();   BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());    PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();    for (PropertyDescriptor property : propertyDescriptors) {    String key = property.getName();    if (key.compareToIgnoreCase("class") == 0) {   continue;  }  Method getter = property.getReadMethod();  Object value = getter!=null ? getter.invoke(obj) : null;  map.put(key, value);  }    return map;  }    }  /** * 使用reflect进行转换 */
class C {  public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {    if (map == null)  return null;    Object obj = beanClass.newInstance();  Field[] fields = obj.getClass().getDeclaredFields();   for (Field field : fields) {    int mod = field.getModifiers();    if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){    continue;    }    field.setAccessible(true);    field.set(obj, map.get(field.getName()));   }   return obj;    }    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;  }
}  

java object互转Map的三种方法相关推荐

  1. Java中遍历Set集合的三种方法

    Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...

  2. Java中遍历Set集合的三种方法(实例代码)

    哈喽,欢迎来到小朱课堂,下面开始你的学习吧! Java中遍历Set集合的三种方法 废话不多说,直接上代码 1.迭代遍历: Set set = new HashSet(); Iterator it = ...

  3. Java 数组转成集合List三种方法和(数组、集合List、Set相互转换)

    Java 数组转成集合List 三种方法 package com.list;import java.util.ArrayList; import java.util.Arrays; import ja ...

  4. java利用实现大数阶乘(三种方法)

    java利用实现大数阶乘(三种方法) 法一: for循环 import java.math.BigInteger; import java.util.Scanner; public class das ...

  5. java中从键盘输入的三种方法以及Console输入

    java中从键盘输入的三种方法: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStre ...

  6. java List转Map的三种方法(java8语法特性使用)

    有时候我们需要将List中的某些属性转为一个map集合,在java8中提供了流式编程函数可以为我们非常方便的达到目的. 目录 1.创建测试类 2.构造测试数据 3.三种方法介绍 (1)第一种: (2) ...

  7. Java 中Int转String的三种方法

    JAVA 中int类型转String类型的三种通常方法: 1.String.valueOf(int i) 2.Integer.toString(int i) 3.i + ""; / ...

  8. java对象转换String类型的三种方法

    **一.采用Object.toString() **toString方法是java.lang.Object对象的一个public方法.在java中任何对象都会继承Object对象,所以一般来说任何对象 ...

  9. java遍历map_java遍历Map的几种方法

    **public static void main(String[] args) { Map map = new HashMap(); map.put("1", "val ...

最新文章

  1. 从单张图像学习双目图像
  2. jenkins安装与配置---window,mis包直接安装
  3. python同时对文件进行读写操作-Python实现的读取文件内容并写入其他文件操作示例...
  4. 1、SELECT:数据表查询语句
  5. [云炬创业基础笔记]第十一章创业计划书测试14
  6. c语言向自定数组_数据结构之用C语言实现定义数组
  7. 错误:不能继续进行下一步操作 openfire 设置._如何为MacBook或Mac电脑恢复出厂设置...
  8. c语言在win8系统不兼容,Win8系统中存在不兼容软件如何解决?
  9. Hugo中文文档 快速开始
  10. 云和恩墨吴涵文:开源将加速成为中国未来发展基础软硬件技术的关键路径
  11. c++ 覆盖、重载与隐藏
  12. java连接数据库配置文件
  13. windows更新安装时出现此更新不适用于你的计算机的解决办法  dos 安装 msu
  14. data后缀文件解码_对任何格式的文件实现加密与解密软件
  15. excel下拉列表多选框_将列表框添加到Excel工作表
  16. TensorFlow RunTime(TFRT) 小试
  17. 解决【react-native init awesomeproject没反应】
  18. php项目宝塔搭建实战前后端Niushop开源商城系统
  19. 存算一体芯片技术及其最新发展趋势(陈巍谈芯)
  20. tf.extract_image_patches以及pytorch的extract_patches

热门文章

  1. PBR 前言:数学、物理基础和渲染概述
  2. oracle 创建用户命令
  3. Oracle PDB save state
  4. linux mipi摄像头驱动,VS-RK3399 在linux系统下面调试Mipi camera接口介绍
  5. UITextView 字数限制,正在输入字符也算进去,区分中英文字符
  6. Node.js:pm2管理进程启动npm run dev和开机自启
  7. 面试题之常见解决方案
  8. Linux命令之ldd命令
  9. 2020中国计算机视觉人才调研报告:算法岗年薪三十多万,超六成企业急需AI产品经理...
  10. matlab标点符号含义