首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayStoreException:在泛型ArrayList中

ArrayStoreException:在泛型ArrayList中
EN

Stack Overflow用户
提问于 2017-06-07 05:52:23
回答 1查看 735关注 0票数 1

来自ArrayStoreException的Java

引发,以指示已尝试将错误类型的对象存储到对象数组中。

为了避免这个异常,我在运行以下测试程序时使用了generics.But:

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {
        Collection<Number> nums = new ArrayList<Number>();
        nums.add(new Integer(1));
        nums.add(new Long(-1));
        Integer[] ints = nums.toArray(new Integer[nums.size()]);

        for (Integer integer : ints) {
            System.out.println(integer);
        }
    }
}

我得到的ArrayStoreException如下-这是我没有想到的。

代码语言:javascript
复制
Exception in thread "main" java.lang.ArrayStoreException
    at java.lang.System.arraycopy(Native Method)
    at java.util.ArrayList.toArray(ArrayList.java:408)

有人能帮我理解为什么即使我的列表是泛型类型也会抛出这个异常吗?

EN

回答 1

Stack Overflow用户

发布于 2017-06-07 05:55:20

您的ArrayList包含一个LongLong不能存储在Integer数组中,因为Integer不是Long的超级类型。

下列措施将起作用:

代码语言:javascript
复制
Number[] ints = nums.toArray(new Number[nums.size()]);

for (Number integer : ints) {
    System.out.println(integer);
}

这一点在toArray的Javadoc中有明确的说明。

抛出: ArrayStoreException -如果指定数组的运行时类型不是此集合中每个元素的运行时类型的超级类型

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

https://stackoverflow.com/questions/44404531

复制
相关文章

相似问题

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