ClassCastException和不兼容

时间:2014-02-13 11:42:37

标签: java classcastexception

在一个方法中,我记得在一行中抛出了一个错误,其中包含以下代码。

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

只是想知道,这些都是相同或不同。

3 个答案:

答案 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