繁体   English   中英

为什么将NullPointerException抛出在这里?

[英]Why the NullPointerException will be thrown here?

这是我的收藏:

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

但是,当我调用在Test类中重写它的sort方法,并且map1是我在Test类中创建的一个集合时,该集合将保留我添加到map集合中的元素,就会抛出该异常,因为它是针对line 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;

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

有你的问题。 NullPointerException不仅在尝试对null调用方法时null 尝试通过null访问数组中的索引将具有相同的效果。 您必须实例化数组,但是由于您使用的是泛型类型,因此在您的情况下这是有问题的。 使用ArrayList而不是数组。

你永远不赋值给a 在最顶层,您可以执行以下操作:

V[] a = null;

但此后再也不给它分配任何东西。 因此,当您这样做时:

a[i] = ...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM