Вопрос-ответ

NullPointerException when Creating an Array of objects [duplicate]

Исключение NullPointerException при создании массива объектов [дубликат]

Я пытался создать массив класса, содержащий два значения, но когда я пытаюсь применить значение к массиву, я получаю исключение NullPointerException.

public class ResultList {
public String name;
public Object value;
}

public class Test {
public static void main(String[] args){
ResultList[] boll = new ResultList[5];
boll[0].name = "iiii";
}
}

Почему я получаю это исключение и как я могу это исправить?

Переведено автоматически
Ответ 1

Вы создали массив, но ничего в него не поместили, поэтому у вас есть массив, содержащий 5 элементов, все из которых равны null. Вы могли бы добавить

boll[0] = new ResultList();

перед строкой, в которой вы устанавливаете boll[0].name.

Ответ 2
ResultList[] boll = new ResultList[5];

создает массив размером=5, но не создает элементы массива.

Вы должны создать экземпляр каждого элемента.

for(int i=0; i< boll.length;i++)
boll[i] = new ResultList();
Ответ 3

Как многие говорили в предыдущих ответах, ResultList[] boll = new ResultList[5]; просто создает массив resultList размером 5, где все элементы равны null. При использовании boll[0].name вы пытаетесь сделать что-то вроде null.name и это является причиной исключения NullPointerException . Используйте следующий код:

public class Test {
public static void main(String[] args){
ResultList[] boll = new ResultList[5];

for (int i = 0; i < boll.length; i++) {
boll[i] = new ResultList();
}

boll[0].name = "iiii";
}
}

Здесь цикл for в основном инициализирует каждый элемент в массиве с помощью ResultList объекта, и как только цикл for завершен, вы можете использовать

boll[0].name = "iiii";
Ответ 4

Я думаю, вызвав

ResultList[] boll = new ResultList[5];

вы создали массив, который может содержать 5 результирующих списков, но вам необходимо инициализировать boll[0], прежде чем вы сможете задать значение.

boll[0] = new ResultList();
java arrays