您的位置:首页 > 其它

反射——不同对象属性映射赋值

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);
}
}
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: