【问题标题】:java.math.BigInteger cannot be cast to java.lang.Integerjava.math.BigInteger 不能转换为 java.lang.Integer
【发布时间】:2012-03-19 15:20:16
【问题描述】:

我收到以下异常。

原因:

java.lang.ClassCastException: java.math.BigInteger 无法转换为 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];

有人知道吗?

【问题讨论】:

  • 谢谢大家,我正在生产中试用它,希望它现在可以工作。

标签: java mysql sql hibernate postgresql


【解决方案1】:

你可以使用:

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

或者可能转换为 Number 以覆盖 IntegerBigInteger 值。

【讨论】:

    【解决方案2】:

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

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

    这就是为什么从BigInteger 转换为Integer 是不可能的原因。

    Java 原语的转换会进行一些转换(例如从double 转换为int),而类型的转换永远不会转换类。

    【讨论】:

    • 我很困惑,因为本地数据库是由 hibernate 使用 Integer 生成的,并且在生产中也应该发生同样的情况,但是在生产中它被更改为 int。
    【解决方案3】:

    java.lang.Integer 不是BigInteger 的超类。 BigIntegerInteger 都继承自 java.lang.Number,因此您可以转换为 java.lang.Number

    请参阅 java 文档 http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Number.html

    【讨论】:

      【解决方案4】:

      你可以试试这个:

      ((BigDecimal) volume).intValue();
      

      我使用java.math.BigDecimal 转换为int(原始类型)。

      它对我有用。

      【讨论】:

        【解决方案5】:

        数据库中的列可能是DECIMAL。您应该将其处理为BigInteger,而不是Integer,否则您将丢失数字。或者将列更改为int

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-23
          • 2022-01-18
          • 2020-03-11
          • 2016-07-26
          • 2013-08-24
          • 1970-01-01
          • 2014-08-29
          • 2018-01-01
          相关资源
          最近更新 更多