继上篇博客 仍然是对大量表数据进行处理时JVM抛出异常:
java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Double

下意识以为自己又写错了拆装箱、或是记错了包装类。
仔细查看报错信息后发现数据库字段的数据类型与预期不一样。
保险起见验证了下该表对应字段数据类型:
private static String getType(Object a) {
return a.getClass().toString();
}
System.out.println(getType(listname.get(0).get(key)));
System.out.println(getType(listarea.get(0).get(key)));
System.out.println(getType(list.get(i).get("DEFECT_AREA")));
结果如图:

借助数据库查询工具DbVis也查到了该表字段:

确认是自己疏忽搞错了数据类型,修改Map的包装类为BigDecimal
待续。。。
本文针对在处理大量表数据过程中遇到的JVM抛出的ClassCastException异常进行了深入分析,并通过检查数据库字段的数据类型找到了问题所在,最终通过修改Map的包装类为BigDecimal解决了问题。
8989

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



