CodeGuide
CodeGuide copied to clipboard
重学 Java 设计模式:实战适配器模式「从多个MQ消息体中,抽取指定字段值场景」
笔误:
public class RebateInfo {
private String userId; // 用户ID
private String bizId; // 业务ID
private Date bizTime; // 业务时间
private String desc; // 业务描述
// ... get/set
}
public static RebateInfo filter(Map obj, Map<String, String> link) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
RebateInfo rebateInfo = new RebateInfo();
for (String key : link.keySet()) {
Object val = obj.get(link.get(key));
RebateInfo.class.getMethod("set" + key.substring(0, 1).toUpperCase() + key.substring(1), String.class).invoke(rebateInfo, val.toString());
}
return rebateInfo;
}
RebateInfo 类中的bizTime为Date类型,没法通在反射的时候指定参数类型为String调用此方法,会出现java.lang.NoSuchMethodException: 异常,应该是需要把bizTime定义为String类型吧,,亦或是如果需要做到适配其它类型的话,怎么做比较好一点呢?例如Integer/Double等等