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);
}
}
}反射——不同对象属性映射赋值
最新推荐文章于 2024-02-23 11:42:00 发布
本文介绍了一个Java反射工具类的实现,该工具类能够转换字段名称为getter和setter方法名,并展示了如何利用这些方法从一个业务对象中获取属性值并设置到另一个消息对象中。根据不同类型的数据,如日期、整数等,采取不同的处理方式。
756

被折叠的 条评论
为什么被折叠?



