2011-03-08 64 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