为什么会在这里抛出NullPointerException?
问题描述:
这是我收集我做:为什么会在这里抛出NullPointerException?
Test<v> map = new Test<V>();
,但是当我打电话的排序方法,我重写它的测试类,也MAP1是一个集合,我让它在测试类将保持元素我添加到地图集合中,这个异常将被抛出,它是第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] = ...
有你的问题。 A NullPointerException
不仅在尝试调用null
上的方法时被抛出;试图通过null
访问数组中的索引将产生相同的效果。你必须实例化数组,尽管在你的情况下这是有问题的,因为你使用的是泛型类型。使用ArrayList
而不是数组。
+0
我不能这样做,你在上面,因为会显示这个错误写的东西“不能创建V – Johanna 2009-08-03 13:52:43
答
您从未将值分配给a
。在最高层你做:
V[] a = null;
但是从来没有分配任何东西后。所以,当你这样做时:
a[i] = ...
a是空的,所以你得到一个空指针异常。
V [] a从来没有初始化。您可以通过在下一次在代码上运行'findbugs'轻松捕获这些类型的错误。 – 2009-08-04 03:33:46