博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 用反射简单应用,将Object简单转换成map
阅读量:6294 次
发布时间:2019-06-22

本文共 4321 字,大约阅读时间需要 14 分钟。

hot3.png

package com.appdev.bsf.server.common;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;public class ObjectDynamicCreator {    /**     * 返回由对象的属性为key,值为map的value的Map集合     *      * @param obj     *            Object     * @return mapValue Map
* @throws Exception */ public static Map
getFieldVlaue(Object obj) throws Exception { Map
mapValue = new HashMap
(); Class
cls = obj.getClass(); Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { String name = field.getName(); String strGet = "get" + name.substring(0, 1).toUpperCase() + name.substring(1, name.length()); Method methodGet = cls.getDeclaredMethod(strGet); Object object = methodGet.invoke(obj); String value = object != null ? object.toString() : ""; mapValue.put(name, value); } return mapValue; } /** * 返回由Map的key对属性,value对应值组成的对应 * * @param map * Map
* @param cls * Class * @return obj Object * @throws Exception */ public static Object setFieldValue(Map
map, Class
cls) throws Exception { Field[] fields = cls.getDeclaredFields(); Object obj = cls.newInstance(); for (Field field : fields) { Class
clsType = field.getType(); String name = field.getName(); String strSet = "set" + name.substring(0, 1).toUpperCase() + name.substring(1, name.length()); Method methodSet = cls.getDeclaredMethod(strSet, clsType); if (map.containsKey(name)) { Object objValue = typeConversion(clsType, map.get(name)); methodSet.invoke(obj, objValue); } } return obj; } /** * 将Map里面的部分值通过反射设置到已有对象里去 * * @param obj * Object * @param data * Map
* @return obj Object * @throws Exception */ public static Object setObjectFileValue(Object obj, Map
data) throws Exception { Class
cls = obj.getClass(); Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { Class
clsType = field.getType(); String name = field.getName(); String strSet = "set" + name.substring(0, 1).toUpperCase() + name.substring(1, name.length()); Method methodSet = cls.getDeclaredMethod(strSet, clsType); if (data.containsKey(name)) { Object objValue = typeConversion(clsType, data.get(name)); methodSet.invoke(obj, objValue); } } return obj; } /** * 把对象的值用Map对应装起来 * * @param map * Map
* @param obj * Object * @return 与对象属性对应的Map Map
*/ public static Map
compareMap(Map
map, Object obj) { Map
mapValue = new HashMap
(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { String name = field.getName(); if (map.containsKey(name)) { mapValue.put(name, map.get(name)); } } return mapValue; } /** * 把临时对象的值复制到持久化对象上 * * @param oldObject * Object 持久化对象 * @param newObject * Object 临时对象 * @return 持久化对象 * @throws Exception */ public static Object mergedObject(Object oldObject, Object newObject) throws Exception { Class
cls = newObject.getClass(); Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { Class
clsType = field.getType(); String name = field.getName(); String method = name.substring(0, 1).toUpperCase() + name.substring(1, name.length()); String strGet = "get" + method; Method methodGet = cls.getDeclaredMethod(strGet); Object object = methodGet.invoke(newObject); if (object != null) { String strSet = "set" + method; Method methodSet = cls.getDeclaredMethod(strSet, clsType); Object objValue = typeConversion(clsType, object.toString()); methodSet.invoke(oldObject, objValue); } } return oldObject; } public static Object typeConversion(Class
cls, String str) { Object obj = null; String nameType = cls.getSimpleName(); if ("Integer".equals(nameType)) { obj = Integer.valueOf(str); } if ("String".equals(nameType)) { obj = str; } if ("Float".equals(nameType)) { obj = Float.valueOf(str); } if ("Double".equals(nameType)) { obj = Double.valueOf(str); } if ("Boolean".equals(nameType)) { obj = Boolean.valueOf(str); } if ("Long".equals(nameType)) { obj = Long.valueOf(str); } if ("Short".equals(nameType)) { obj = Short.valueOf(str); } if ("Character".equals(nameType)) { obj = str.charAt(1); } return obj; }}

转载于:https://my.oschina.net/huangfude/blog/410509

你可能感兴趣的文章
PowerDesigner反向生成物理数据模型
查看>>
杰思安全获数千万元A+轮投资,绿盟科技领投,德联资本跟投
查看>>
Google 的最后努力 :请求最高法院撤回 88 亿罚单
查看>>
服气!3小时竟能写出风靡全球的小游戏,还顺手就赚的盆满钵满
查看>>
第七篇:SpringBoot 2.x集成Lombok
查看>>
【对讲机的那点事】带你玩转灵通LT33公网集群对讲机
查看>>
Kettle性能调优汇总
查看>>
浅谈网络爬虫中广度优先算法和代码实现
查看>>
第十九章:集合视图(二十一)
查看>>
分享一个算法,计算能在任何背景色上清晰显示的前景色
查看>>
javaScript系列 [01]-javaScript函数基础
查看>>
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
查看>>
监控MySQL数据库的主从状态的shell脚本
查看>>
hexo部署在Github-Page流程
查看>>
特征值与特征向量的几何含义(转)
查看>>
MyBatis3 xml映射文件配置
查看>>
【WebAPI No.5】Core WebAPI中的自定义格式化
查看>>
Could not get dialect instance.
查看>>
yum源失效,yum命令报错404
查看>>
Jmeter 压测 http(s)
查看>>