Почему NullPointerException будет выброшено здесь? - PullRequest
0 голосов
/ 03 августа 2009

это моя коллекция, которую я делаю:

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

но когда я вызываю метод sort, который переопределяю его в классе Test, а также map1 - это одна коллекция, которую я создаю в классе Test, в котором хранятся элементы, которые я добавляю в коллекцию карты, это исключение будет выдано для строки 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 ]

10 голосов
/ 03 августа 2009
V[] a = null;
...
a[i] = ...

Это твоя проблема. NullPointerException генерируется не только при попытке вызвать метод на null; попытка получить доступ к индексу в массиве через null будет иметь тот же эффект. Вы должны создать экземпляр массива, хотя в вашем случае это проблематично, так как вы используете универсальный тип. Используйте ArrayList вместо массива.

4 голосов
/ 03 августа 2009

Вы никогда не присваивали значение a. На самом верху вы делаете:

V[] a = null;

но никогда не назначайте ему ничего после этого. Итак, когда вы делаете:

a[i] = ...

a равно нулю, поэтому вы получаете исключение нулевого указателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...