首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.ArrayStoreException at java.lang.System.arraycopy(原生方法) at java.util.ArrayList.toArray(未知源) at Hai.main(Hai.java:20)

java.lang.ArrayStoreException at java.lang.System.arraycopy(原生方法) at java.util.ArrayList.toArray(未知源) at Hai.main(Hai.java:20)
EN

Stack Overflow用户
提问于 2014-01-27 07:29:57
回答 1查看 2.7K关注 0票数 0

在执行下面的代码时,我会得到以下错误.

我试图使用列表集合的BigDecimal ()方法将对象数组的列表转换为一个toArray数组。

当我简单地给出fileFormatObj.toArray()时,它工作得很好,但是当我给出如下代码时,我得到的是错误.。

代码语言:javascript
复制
public static void main(String[] args) 
{
    List<BigDecimal> objList = new ArrayList<BigDecimal>();
    List<Object[]> fileFormatObj = new ArrayList<Object[]>();
    final Object[] array1 = new Object[1];
    array1[0] = new BigDecimal(BigInteger.ONE);
    fileFormatObj.add(array1);
    if (fileFormatObj != null) 
    {
        //Error here java.lang.System.arraycopy    
        final BigDecimal[] arr = fileFormatObj
            .toArray(new BigDecimal[fileFormatObj.size()]);

        objList.addAll(Arrays.asList(arr));
        for (final BigDecimal object : arr) {
            System.out.println("TEST-->" + object.intValue());
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-01-27 07:35:14

问题是fileFormatObj中的元素是Object[],而不是BigDecimal。因此,不能将fileFormatObj转换为BigDecimal[]。您甚至不能将其转换为BigDecimal[][] (因为Object[]不是BigDecimal[]),但目前您正试图将数组引用存储在BigDecimal[]中。

还不清楚你为什么要这样做,但这根本行不通。如果你编辑你的问题来解释你为什么要这么做--大的是什么--我们可以帮你更多的忙。

如果您绝对必须将一个List<Object[]>转换为一个BigDecimal[],并且您希望获取每个数组的第一个元素,那么您可以使用如下所示:

代码语言:javascript
复制
BigDecimal[] arr = new BigDecimal[fileFormatObj.size()];
for (int i = 0; i < arr.length; i++) {
    Object[] fileFormatArray = fileFormatObj.get(i);
    Object firstElement = fileFormatArray[0];
    arr[i] = (BigDecimal) firstElement;
}

当然,您可以在一条语句中完成整个for循环体--我只是在这里拆分它,以明确向BigDecimal转换的确切位置。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21375212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档