java HashMap 转Object对象 工具类
来源:互联网 发布:php app接口开发实例 编辑:程序博客网 时间:2024/06/05 07:59
import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.lang.reflect.Method;import java.util.Map;/** * Created by cike-zihao on 2015/12/9. */public final class HashMapToObject { private static Logger logger = LoggerFactory.getLogger(HashMapToObject.class); /** * HashMap->Object * * @param map * @param obj */ public static void setObject(Map<String, Object> map, Object obj) { if (map != null) { for (Map.Entry<String, Object> entry : map.entrySet()) { try { setFieldValue(entry.getKey(), obj, entry.getValue()); } catch (Exception e) { logger.warn("hash to object fail", e); } } } } /** * 反映获取指定字段值 * * @param fieldName * @param obj * @return */ public static String getFieldValue(String fieldName, Object obj) throws Exception { try { String methodName = getMethodName("get", fieldName); Method method = getDeclaredMethod(obj, methodName, new Class[0]); if (method != null) { method.setAccessible(true); return defaultObject(method.invoke(obj, new Object[0])); } } catch (Exception ex) { logger.error("获取对象值失败:", ex); throw new Exception("获取对象值失败!"); } return ""; } /** * 反映设置指定字段值 * * @param fieldName * @param obj * @param fieldValue */ public static void setFieldValue(String fieldName, Object obj, Object fieldValue) throws Exception { try { String methodName = getMethodName("set", fieldName); Method method = getDeclaredMethod(obj, methodName, fieldValue.getClass()); if (method != null) { method.setAccessible(true); method.invoke(obj, new Object[]{fieldValue}); } } catch (Exception ex) { logger.error("设置对象值失败:", ex); throw new Exception("设置对象值失败!"); } } /** * 获取方法名称 * * @param prefix * @param fieldName * @return */ private static String getMethodName(String prefix, String fieldName) { return prefix + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); } /** * 查找方法 * * @param object * @param methodName * @param parameterTypes * @return */ private static Method getDeclaredMethod(Object object, String methodName, Class<?>... parameterTypes) { Method method = null; for (Class<?> clazz = object.getClass(); clazz != Object.class; clazz = clazz.getSuperclass()) { try { method = clazz.getDeclaredMethod(methodName, parameterTypes); return method; } catch (Exception e) { } } return null; } /** * 设置默认值 * * @param obj * @return */ private static String defaultObject(Object obj) { if (obj == null) { return ""; } else { return String.valueOf(obj); } }}
测试举例:重点内容
//反序列化数据 HashMap<String, Object> resultMap = resultMap(responseMessage); CommonUniqueTransferResponse response = new CommonUniqueTransferResponse(); // hash 到 object 转化 HashMapToObject.setObject(resultMap, response);
0 0
- java HashMap 转Object对象 工具类
- Object对象转map工具类
- Java中HashMap、HashSet中Object类型对象比较问题
- Java面向对象--Object类
- Java面向对象-Object类
- java HashMap 线程安全 工具类
- java实现List<Object>转List<实体类>,java实现Object转对象,java实现Object转实体类
- java Obect 转map map 转Object 工具类
- java List、Object、String、Map转json 工具类
- java 创建hashmap对象,
- java HashMap操作对象
- java 面向对象 HashMap
- Day11 --Eclipse工具 Object对象
- Java面向对象高级--Object类
- Java面向对象 Object类 内部类
- java面向对象-Object类-equals()
- java面向对象-Object类-toString()
- Java对象的祖宗Object类
- cp: 无法通过符号链接"文件名" 进行操作 问题
- 一条命令搞定nginx安装
- zigbee基础应用(一)流水灯
- myeclipse修改项目名称后,部署到tomcat问题
- 10-CSS格式化排版
- java HashMap 转Object对象 工具类
- 详解依赖注入与自动装配
- myFocus实现焦点图制作
- csuoj-1733-XueXX and Chessboard
- eclipse打开选中文件(文件夹,包)的当前目录
- 怎才能进步的更快?
- runtime error怎么解决
- java学习、java入门:Java如何学?我的经验告诉你
- Spring依赖注入(DI)