为什么会抛出NullPointerException?

时间:2009-08-03 13:39:51

标签: java collections

这是我的收藏品:

Test<v> map = new Test<V>();

但是当我调用sort方法时,我在Test类中重写它,并且map1是我在Test类中创建的一个集合,它将保留我添加到map集合的元素,这个异常将被抛出是第5行: a [i] = map.get(new Integer(i));

    V[] a = null;
    public void sort() {
    V temp = null;

    for (int i = 0; i < map1.size(); i++) {

        a[i] = map1.get(new Integer(i));

        if (a[i].getName().hashCode() > a[i + 1].getName().hashCode())
            temp = a[i];
        a[i] = a[i + 1];
        a[i + 1] = temp;

    }

2 个答案:

答案 0 :(得分:10)

V[] a = null;
...
a[i] = ...

有你的问题。尝试在NullPointerException上调用方法时,不仅会抛出null;尝试通过null访问数组中的索引将产生相同的效果。您必须实例化该数组,但在您的情况下这是有问题的,因为您使用的是泛型类型。使用ArrayList代替数组。

答案 1 :(得分:4)

您从未为a分配值。在最顶端你做:

V[] a = null;

但在此之后永远不会给它任何东西。所以,当你这样做时:

a[i] = ...

a为null,因此您将获得空指针异常。