2011-03-08 88 views
15

我在modelData.add(i, es)方法中獲得NullPointerException。我從調試中知道es不是null。我真的很困惑,謝謝。list.add上的NullPointerException

public class EventTableModel extends AbstractTableModel { 

    //private int rowCount = 0; 
    protected List<EventSeat> modelData; 
    private static final int COLUMN_COUNT = 3; 
    private Event e; 
    Event j = GUIpos.m; 
    int i = 1; 

public EventTableModel(Event e) { 
    this.e = e; 
    try { 
     System.out.println(modelData); 
     for (EventSeat es : e.getEventSeats()) { 
      modelData.add(i, es); 
      i++; 
     } 
    } catch (DataException ex) { 
     Logger.getLogger(EventTableModel.class.getName()).log(Level.SEVERE, null, ex); 
    } 

} 
+0

哪裏'modelData'得到初始化? – 2011-03-08 00:07:16

+0

'modelData' null? – 2011-03-08 00:07:44

+1

'modelData'初始化在哪裏?不應該有'modelData = new ArrayList ();'某處? – srgerg 2011-03-08 00:09:02

回答

40

您需要初始化列表以獲取NullPointerException

protected List<EventSeat> modelData = new ArrayList<EventSeat>(); 
+0

哇,這很容易! – novicePrgrmr 2011-03-08 00:16:39

7

嘗試

protected List<EventSeat> modelData = new ArrayList<EventSeat>(); 
+0

如果您更改此項以匹配其他兩個答案,則獎勵分數;我不認爲你可以像那樣實例化一個List。 – phooji 2011-03-08 00:09:53

5

在第一次看,好像modelData尚未實例。我會實例化modelData這樣的:

protected List<EventSeat> modelData = new ArrayList<EventSeat>(); 

僅供參考。在Java 7中會出現一個新的語法,你可以使用 - someObject?.doSomething();

+0

我不認爲e.getEventSeats()返回null(或返回包含nulll元素的迭代器)。如果是這種情況,代碼將在'for'開始處終止。 – phooji 2011-03-08 00:15:34

+0

當然..急於寫出解決方案。感謝您指出了這一點。 – 2011-03-08 00:19:13