java.math.BigInteger 不能被强制转换为 java.lang.Integer

2022-09-01 04:51:52

我得到以下异常。

引起:

java.lang.ClassCastException: java.math.BigInteger 不能 cast to java.lang.Integer

使用以下代码

List queryResult = query.list();

for (Iterator<Object[]> it = queryResult.iterator(); it.hasNext();) {
    Object[] result = it.next();
    Integer childId = (Integer) result[0];
    Integer grandChildCount = (Integer) result[1];
    CompanyNode childNode = childNodes.get(childId);
    childNode.setHasChildren(grandChildCount != 0);
    childNode.setIsLeaf(grandChildCount == 0);
}

在此行

Integer grandChildCount = (Integer) result[1];

有人知道吗?


答案 1

您可以使用:

Integer grandChildCount = ((BigInteger) result[1]).intValue();

或者也许可以投射到涵盖两者和值。NumberIntegerBigInteger


答案 2

正如我们从 javaDoc 中看到的,不是 的子类:BigIntegerInteger

java.lang.Object                      java.lang.Object
   java.lang.Number                       java.lang.Number
      java.math.BigInteger                    java.lang.Integer

这就是为什么从到选择是不可能的原因。BigIntegerInteger

Java基元的强制转换将进行一些转换(例如从到),而类型的强制转换永远不会转换类。doubleint


推荐