2016-05-03 11 views
-2

Я пытаюсь добавить различные типы переменных (String и Integer) в список объектов, но когда я запускаю код, я всегда получаю исключение NullPointerException. Я уже отлаживал его, а переменные не равны нулю. Может ли кто-нибудь помочь мне и рассказать мне, как я могу добавить разные типы переменных в список объектов?Добавление целых чисел и строк в список <Object>

private int x; 
private int y; 
private int z; 
private int stockwerk; 
private String address; 
private List<Object> list; 

public List<Object> getAttributeList() { 

    list.add(1, this.x); 
    list.add(2, this.y); 
    list.add(3, this.z); 
    list.add(4, this.stockwerk); 
    list.add(5, this.address); 

    return this.list; 

} 
+1

«Я уже отлаживал его, а переменные не равны нулю» - вы пропустили его. – user2357112

+2

Также стоит отметить, что вы, вероятно, столкнетесь с ошибкой нулевого указателя позже, так как вы вставляете элементы, начинающиеся с индекса 1 вместо 0. Таким образом, первый элемент в вашем списке всегда будет null .... – Ethan

ответ

4

Вы должны инициализировать список один раз list = new ArrayList<Object>() (к примеру). В противном случае список будет пустым, а list.add будет генерировать исключение NullPointerException.

0

Несколько ошибок в коде, который вы отправили;

первый: определить конструктор, где можно инициализировать список

MyClass(){ 
    list = new ArrayList<Object>(); 
} 

2-й: только потому, что список может взять объект не позволит вам сделать это ..

list.add(1, this.x); 
    list.add(2, this.y); 
    list.add(3, this.z); 
    list.add(4, this.stockwerk); 
    list.add(5, this.address); 

Вам необходимо поместить в список либо целое число, либо строку

, если вам действительно нужно это сделать: list.add(5, this.address); - это потому, что вы пытаетесь указать порядок вставки, но вы делаете это последовательно, поэтому это не имеет большого смысла, так как список может сделать это автоматически.

если вы вместо этого пытаются поместить в список целую строку + (я могу сделать это из-за названия вопроса), а затем перепроектировать архитектуру, а затем определить карту вместо списка, иначе у вас будет хорошая головная боль, пытающаяся прочитать данные в списке ....

Смежные вопросы