Java ClassCastException与不兼容

Java ClassCastException与不兼容,java,classcastexception,Java,Classcastexception,我记得在一个方法中,有一个错误抛出在一行有以下代码 java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer 在 我将代码替换为 Integer count = ((BigDecimal) result[1]).intValue(); 错误已经消失了 但是,对于新项目中相同的代码片段,我是如何得到以下错误的 java.lang.ClassCastException: java.

我记得在一个方法中,有一个错误抛出在一行有以下代码

java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer

我将代码替换为

Integer count = ((BigDecimal) result[1]).intValue();
错误已经消失了

但是,对于新项目中相同的代码片段,我是如何得到以下错误的

java.lang.ClassCastException: java.math.BigDecimal incompatible with java.lang.Integer
我只是想知道,两者是否相同。

两者都不相同 整数计数=整数结果[1];尝试将BigDecimal对象强制转换为整数。thorw将永远是一个例外

整数计数=BigDecimal结果[1]。intValue;如果您的结果有BigDecimal对象,这将起作用

最好检查是否正确编译了代码。

尝试以下方法:

Integer count = ((BigDecimal) result[1]).intValueExact();

或:

BigDecimal.intValueExact或BigDecimal.intValue:

将此BigDecimal转换为int。此转换类似于Java语言规范中定义的从double到short的缩小原语转换:此BigDecimal的任何小数部分都将被丢弃,如果生成的BigInteger太大而无法放入int,则只返回低阶32位。请注意,此转换可能会丢失有关此BigDecimal值的总体大小和精度的信息,并返回带相反符号的结果

请考虑BigDecimal可能包含大于Integer.MAX_值的值


参考资料:

在不知道结果的情况下很难帮助您…如果您在同一代码段中遇到相同的错误,通常情况下,这是同样的问题,同样的解决方案也适用。结果数组的类型是什么?对于不兼容的错误:当在WPS中使用交换服务器关系API并将Oracle作为数据库时,会收到此异常。年,我问了这个问题。你找到java.math.Integer了吗?在java中没有这样的。。。
Integer count = ((BigDecimal) result[1]).intValueExact();