反射——不同对象属性映射赋值
2016-02-29 16:38
363 查看
public class ReflectUtil { public static String convertToGetterMethodName(String fieldName) { StringBuilder getterName = new StringBuilder("get"); getterName.append(fieldName.substring(0, 1).toUpperCase()); getterName.append(fieldName.substring(1)); return getterName.toString(); } public static String convertToSetterMethodName(String fieldName) { StringBuilder setterName = new StringBuilder("set"); setterName.append(fieldName.substring(0, 1).toUpperCase()); setterName.append(fieldName.substring(1)); return setterName.toString(); } } <pre name="code" class="java">public void convertObjToMsg( Object bizObject, IPBusinessObject<? extends IPBusinessObject<?, ?, ?>, ? extends IPBusinessObject<?, ?, ?>, ? extends Enum<?>> targetMsg, Map<String, String> lufaxObToMsgMap) { Set<Entry<String, String>> entrySet = lufaxObToMsgMap.entrySet(); for (Entry<String, String> enrty : entrySet) { String sourceField = enrty.getKey(); String targetField = enrty.getValue(); try { Object sourceFieldValue; sourceFieldValue = bizObject.getClass().getMethod(ReflectUtil.convertToGetterMethodName(sourceField)) .invoke(bizObject); Method method; if (sourceFieldValue != null) { if (sourceFieldValue instanceof Date) { SimpleDateFormat date_format = new SimpleDateFormat("yyyyMMdd"); String p_date = date_format.format(sourceFieldValue); method = targetMsg.getClass().getMethod(ReflectUtil.convertToSetterMethodName(targetField), String.class); method.invoke(targetMsg, p_date); } else if (sourceFieldValue instanceof BigDecimal) { method = targetMsg.getClass().getMethod(ReflectUtil.convertToSetterMethodName(targetField), double.class); method.invoke(targetMsg, ((BigDecimal) sourceFieldValue).doubleValue()); } else if (sourceFieldValue instanceof Integer) { method = targetMsg.getClass().getMethod(ReflectUtil.convertToSetterMethodName(targetField), int.class); method.invoke(targetMsg, sourceFieldValue); } else if (sourceFieldValue instanceof Long) { method = targetMsg.getClass().getMethod(ReflectUtil.convertToSetterMethodName(targetField), long.class); method.invoke(targetMsg, sourceFieldValue); } else if (sourceFieldValue instanceof Boolean) { String bValue = null; if (((Boolean) sourceFieldValue).equals(true)) { bValue = "Y"; } else if (((Boolean) sourceFieldValue).equals(false)) { bValue = "N"; } method = targetMsg.getClass().getMethod(ReflectUtil.convertToSetterMethodName(targetField), String.class); method.invoke(targetMsg, bValue); } else { method = targetMsg.getClass().getMethod(ReflectUtil.convertToSetterMethodName(targetField), sourceFieldValue.getClass()); method.invoke(targetMsg, sourceFieldValue); } } } catch (InvocationTargetException | NoSuchMethodException | IllegalAccessException | IllegalArgumentException | SecurityException e) { LOGGER.error("ClassNotFoundException:" + "sourceField:" + sourceField + ",targetField:" + targetField); } } }
相关文章推荐
- 10g 及之后导出/导入工具
- NSString、NSMutableString基本用法
- cxf 调用webservice
- java基础知识---每天进步一点
- shell脚本实现带参数
- Android ListView异步加载图片乱序问题,原因分析及解决方案(一)
- RadioButton复选框
- Android 自定义View (一)
- JAVA中值类型和引用类型的不同?
- LeetCode: Convert Sorted List to Binary Search Tree
- docker
- 使用Git上传代码到GitHub详细的不能再详细教程
- Android的Launcher启动器中添加快捷方式及小部件实例
- singleTask和startActivityResult
- 盒模型&&外边距塌陷
- iOS下的2D仿射变换机制CGAffineTransform相关
- 仿微信图片选择器
- 字符串
- Git 的origin和master解析
- Android内存优化(使用SparseArray和ArrayMap代替HashMap)