2016-05-03 35 views
-2

我想添加不同類型的變量(字符串和整數)到對象列表,但是當我運行代碼時,我總是得到一個NullPointerException。我已經調試過它,變量不爲null。有人可以幫助我,告訴我如何將不同類型的變量添加到對象列表中?將整數和字符串添加到列表<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開始的元素後,您可能會遇到空指針錯誤。因此,列表中的第一個元素始終爲空.... – Ethan

回答

4

你需要用list = new ArrayList<Object>()(例如)初始化一次名單。否則列表將爲空,並且list.add將拋出NullPointerException。

0

您發佈的代碼中存在多處錯誤;

1: 定義構造函數,你可以初始化列表

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

第二:只是因爲列表可以採取對象不允許你這樣做..

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);是因爲您正在嘗試指定插入順序,但是您按順序執行該操作,所以沒有太大意義,因爲列表可以自動爲您執行此操作

如果您而是試圖在列表中加入一些整數+字符串(我可以推斷出這是因爲問題的標題),然後重新設計架構,然後定義一個地圖而不是一個列表,否則你會很頭疼地嘗試閱讀在列表中的數據....

相關問題