ArrayStoreException:将List转换为Array时为null

时间:2013-11-27 23:30:29

标签: java

这可能听起来很傻,但是,从List转换为数组时出现此错误:

ArrayStoreException:null

我现在使用的代码是:

public void onSuccess(List<Agent> resultList) {

    Agent[] array = new Agent[resultList.size()];
    resultList.toArray(array);

代理一个我用自己的字段定义定义的类,所有这些都是私有的最终字符串

但我不知道我可能会错过什么。

提前感谢您的帮助。

亲切的问候,

1 个答案:

答案 0 :(得分:1)

您可能正在将 ArrayList&lt; Agent&gt; 传递给某些方法 只有一个 ArrayList List 参数(无类型)。这种方法 可以通过编译但在运行时搞砸了。示例如下。

如果您在我的示例中注释掉对messUp的调用,那么事情就可以了。 但是messUp可以将不是Agent的东西添加到你的列表中, 并以这种方式引起问题。

这是我最好的猜测,但没有看到你的代码。

希望它有所帮助。

import java.util.ArrayList;
import java.util.List;


public class Test009 {

    public static void main(String[] args) {
        List<Agent> resultList = new ArrayList<Agent>();
        resultList.add(null);
        resultList.add(new Agent1());
        resultList.add(new Agent());
        messUp(resultList);
        test(resultList);
    }

    private static void messUp(List lst){
        lst.add("123");
    }

    public static void test(List<Agent> resultList){
        Agent[] array = new Agent[resultList.size()];
        resultList.toArray(array);
        System.out.println("done");     
    }
}

class Agent {
    protected int x;
}

class Agent1 extends Agent{
    protected int y;
}

附加说明:好的,好吧,这不解释 错误消息的“null”部分。 所以根本原因有些不同。