利用java反射将map值封装到对象中

Posted 没有梦想-何必远方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用java反射将map值封装到对象中相关的知识,希望对你有一定的参考价值。

有时候我们需要将map里面的值依据键依次封装到对象里面。
这时需要简单的用下反射。
例子如下:

public void newLoadFromMap(Map<?,?> map) throws IllegalArgumentException, IllegalAccessException
        try 
        Field[] fields = this.getClass().getDeclaredFields();//拿到对象所有的属性
        for(Field f: fields)//遍历属性并赋值,赋值前要先判断属性类型
             if (f.getGenericType().toString().equals(
              "class java.lang.String"))  // 如果type是类类型,则前面包含"class ",后面跟类名
             Object DBValue = null;
                DBValue = map.getOrDefault(f.getName(), null);//getOrdefault->jdk8新特性,map中如果包含这个键,取其值,如果不包含,取第二个参数(默认值)
                if (DBValue == null)
                    f.set(this, "");
                else
                    f.set(this,DBValue.toString());
            
            // 如果类型是Integer
            if (f.getGenericType().toString().equals(
              "class java.lang.Integer")) 
             Object DBValue = null;
                DBValue = map.getOrDefault(f.getName(), null);
                if (DBValue == null)
                    f.set(this, null);
                else
                    f.set(this,Integer.parseInt(DBValue.toString()));
            
            // 如果类型是Date
            if (f.getGenericType().toString().equals(
              "class java.sql.Timestamp")) 
             Object DBValue = null;
                DBValue = map.getOrDefault(f.getName(), null);
                if (DBValue == null)
                    f.set(this, null);
                else
                    SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    f.set(this,DateFormat.dateToTimestamp(s.parse(DBValue.toString()), "yyyy-MM-dd HH:mm:ss"));
                
            
        
         catch (Exception e) 
            e.printStackTrace();
        
    

以上是关于利用java反射将map值封装到对象中的主要内容,如果未能解决你的问题,请参考以下文章

JAVA---反射

java利用映射表名称反射创建实体类并赋属性值

JAVA中利用反射机制进行对象和Map相互转换的方法

Java -- JDBC_利用反射及 JDBC 元数据编写通用的查询方法

利用反射封装Oracle数据库表对应的VO对象

利用反射机制实现对象转Map集合