利用java反射将map值封装到对象中
2016-07-28 14:56
956 查看
有时候我们需要将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编程思想的翻译
- tomcat使用JDNI配置信息和使用信息。用于JDBC连接池
- javaWeb_监听器
- 纯Java获得本地MAC地址
- Java动态代理的实现
- javaWeb_过滤器
- javaWeb_Servlet
- eclipse & visual studio快捷键对比一览
- Java获取日期属于当年第几周
- java获取cpu、内存、硬盘信息
- java的动态代理机制详解
- 5、Java并发编程:Lock
- JAVA SOCKET connect超时设置是如何实现的?
- java 中文和Unicode码 互相转换
- Spring Data Jpa简化Jpa开发
- java服务端接受安卓bitmap图片编码问题
- java锁之CyclicBarrier(互相等待,直到大家都做完,一起开始下面)
- Eclipse和Android Studio的偏好设置的导出和导入
- jrebel在Myeclipse中的使用
- jdk1.5、1.6、1.7新特性详细介绍(整理)