在一个方法中,我记得在一行中抛出了一个错误,其中包含以下代码。
java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer
在
Integer count = (Integer) result[1];
我将代码替换为
Integer count = ((BigDecimal) result[1]).intValue();
错误已经消失。
但有些我如何在新项目中获得相同代码片段的以下错误。
java.lang.ClassCastException: java.math.BigDecimal incompatible with java.lang.Integer
只是想知道,这些都是相同或不同。
答案 0 :(得分:0)
两者都不一样
Integer count = (Integer) result[1];
尝试将BigDecimal对象强制转换为整数。总是会摒弃异常。
Integer count = ((BigDecimal) result[1]).intValue();
如果你的结果有BigDecimal对象,这将有效。
最好检查一下你是否正确编译了代码。
答案 1 :(得分:0)
试试这个:
Integer count = ((BigDecimal) result[1]).intValueExact();
或者:http://www.tutorialspoint.com/java/math/bigdecimal_intvalueexact.htm
答案 2 :(得分:0)
BigDecimal.intValueExact()(或BigDecimal.intValue()):
将此BigDecimal转换为int。这种转换类似于Java语言规范中定义的从double到short的缩小原语转换:此BigDecimal的任何小数部分都将被丢弃,如果生成的“BigInteger”太大而不适合int,则只有低 - 返回32位。请注意,此转换可能会丢失有关此BigDecimal值的整体大小和精度的信息,并返回具有相反符号的结果。
Plase考虑到BigDecimal可能包含大于Integer.MAX_VALUE的值。
参考:here