/**
 * 使用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实现map和object互转的三种方法的更多相关文章

  1. Java/JSP获得客户端网卡MAC地址的三种方法解析

    java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种. 1.通过命令方式,在客户端执行Ipconfig 等等.(java/jsp) 2.通过ActiveX的方法.(jsp) 3.通过向13 ...

  2. java将doc文件转换为pdf文件的三种方法

    http://feifei.im/archives/93 —————————————————————————————————————————————— 项目要用到doc转pdf的功能,一番google ...

  3. Java Web开发中用Tomcat部署项目的三种方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/hello" docBase ...

  4. Java多线程:向线程传递参数的三种方法

    在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程 ...

  5. Java中实现十进制数转换为二进制的三种方法

    第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数 ...

  6. map和object互转的几种方式

    1.使用Apache中的BeanUtils类,导入commons-beanutils包. 2.使用JSON 3.利用java.lang.reflect.Field类完成Obj和Map之间的相互转换 h ...

  7. java中判断字符串是否为数字的三种方法

    以下内容引自  http://www.blogjava.net/Javaphua/archive/2007/06/05/122131.html 1用JAVA自带的函数   public static ...

  8. java判断一个字符串是否是数字的三种方法

    参考https://blog.csdn.net/ld_flex/article/details/7699161 1 用JAVA自带的函数 public static boolean isNumeric ...

  9. Java 判断字符串能否转化为数字的三种方法

    用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = str.length();--i>=0;){ if (! ...

随机推荐

  1. ORA-16179: incremental changes to "log_archive_dest_1" not allowed with SPFILE

    SQL> alter system set log_archive_dest_1='E:\arch ' scope=both; alter system set log_archive_dest ...

  2. js 点击展开、收起

    //点击展开.收起 window.onload=function(){ var current=document.getElementsByTagName('li')[0]; document.bod ...

  3. Compile Sources 和 Copy Bundle Resources的区别

    Compile Sources主要存放.m文件 Copy Bundle Resources 主要存放xib plist bundle js 文件

  4. weiphp---------图灵机器人存在的bug。

    1.很多人下载下来weiphp源码以后,配置好了图灵机器人却不能使用.原因是因为他源码里面存在一个小bug 上图红色框框内是他的源码,问题就出在这里. 修改方法: if($result ['code' ...

  5. 免费VPN 实测可用

    vpngate.net 的镜像站点列表 (更新于 2014-05-18 03:06:00 UTC): http://121.135.220.121:26633/cn/ (Mirror location ...

  6. 转:Java实现几种常见排序方法

    日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序等. 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一 ...

  7. [原创]java WEB学习笔记50:文件上传案例

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. 夺命雷公狗jquery---1选择元素的3种方法

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. PTPX中的clock tree与LP design

    PTPX在加入CPF/UPF这样的文件后,可以分析multi-voltage,power-gating这样的设计. 针对某个power rail的cell,PTPX支持进行annotate. set_ ...

  10. 【crunch bang】调整窗口大小

    在终端下,   <super> + 上箭头  == 向上调整大小 <super> + 下箭头(左.右)