【问题标题】:Why I convert ArrayList to Interger[] is wrong? [duplicate]为什么我将 ArrayList 转换为 Integer[] 是错误的? [复制]
【发布时间】:2015-05-01 21:57:19
【问题描述】:
private ArrayList<Integer> list;
...
...
...
for (int i=0; i < list.size(); i++) {
                Log.e("downloadTask","resource ID is " + list.get(i));
            }
Integer[]  resourceId = resourceId= (Integer[])list.toArray();

在 for() 语句之前,列表已经被初始化。它包含三个要素; 日志消息是正确的,但是运行时

Integer[]  resourceId = (Integer[]) list.toArray();

它会抛出异常。我不知道如何解决这个问题。

【问题讨论】:

    标签: java android arraylist integer


    【解决方案1】:

    list.toArray()返回一个对象数组(Object[]),它不能被强制转换为整数数组(因为Object[]可以包含任何东西,比如StringBooleanSpiderMan,不仅Integer)。

    试试:

    list.toArray(new Integer[list.size()]); //will fill and return passed array 
                                            //with all elements from list
    

    以后,请提供所抛出的确切异常(并包括堆栈跟踪),以便人们更容易发现问题。

    【讨论】:

    • 首先,谢谢您的帮助。但是我仍然不知道“new Integer[list.size()]”的含义。这意味着创建一个从 list 复制的新 Integer[3] 数组,是或否?
    • 没错,list.toArray(new Integer[list.size()]); 行所做的就是创建一个以列表大小为长度的整数数组,并将其传递给toArray 方法进行填充。见:docs.oracle.com/javase/7/docs/api/java/util/…
    • 我已经知道“stackoverflow.com/questions/5374311/…”的意思了。再次感谢您。
    猜你喜欢
    • 2015-05-29
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多