【问题标题】:Error convert BigDecimal to int将 BigDecimal 转换为 int 时出错
【发布时间】:2016-03-21 09:58:03
【问题描述】:

我有以下情况:

List<BigDecimal> nvs = servSuperlivelloDAO.findNetworkVersion(year, daynumber);
int[] res = new int[nvs.size()];
for (int i = 0; i < nvs.size(); i++) {
    res[i] = nvs.get(i).intValue();
}

将 BigDecimal 转换为 int 会出现此错误:

java.lang.ClassCastException: java.lang.Integer 不能转换为 java.math.BigDecimal

我不明白为什么我在 BigDecimal 列表中有一个整数。

【问题讨论】:

  • 请发送minimal reproducible example。问题不在发布的代码中。
  • 似乎.findNetworkVersion()实际上返回Integer的列表,而不是BigDecimal

标签: java list casting


【解决方案1】:

我猜问题出在第一行

List<BigDecimal> nvs = servSuperlivelloDAO.findNetworkVersion(year, daynumber);

尝试调试 findnetworkVersion() 方法。并检查该方法的返回类型。 (真的是 BigDecimal 列表吗?)。

【讨论】:

  • 问题不在于 findNetworkVersion 的内部工作(正如调试所揭示的那样),而不是严格来说声明的方法的返回类型。主要相关问题是返回列表中对象的运行时类型。您可以使用调试器、调用 getClass() 和/或代码中的 instanceof 测试来检查它们。
  • 根据问题,错误说 - java.lang.Integer 不能转换为 java.math.BigDecimal。这意味着,某处 Integer 被返回并分配给 BigDecimal。这不是问题中提到的“从 BigInteger 到 Integer 的转换”(相反)。
  • @OleV.V.通过调试,我的意思是找到该函数( findNetworkVersion() )返回的内容。
  • 好吧,@Akash,我误解了你的目标。我们同意,真的。
【解决方案2】:

我认为 DAO 方法:servSuperliveelloDAO.findNetworkVersion(year, daynumber) 返回一个 int 而不是 BigDecimal。核实 !

这是一个将 BigDecimal 强制转换为 int 且没有任何错误的示例:

package test;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<BigDecimal>  list = new ArrayList<BigDecimal>();
        list.add(new BigDecimal(1));
        list.add(new BigDecimal(2));
        int arr[] =new int[list.size()];
        for(int i=0;i<list.size();i++)
        {
            arr[i] = list.get(i).intValue();
            System.out.println(arr[i]);
        }

    }
}

【讨论】:

    【解决方案3】:

    如果Sasha的建议是正确的,你可以通过声明nvsList&lt;? extends Number&gt; nvs来解决它(我没有测试过)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多