这个代码块出了什么问题?

时间:2014-04-10 20:06:53

标签: java

我正在尝试从实体对象列表中过滤掉一些数据。这是我的示例代码:

List<Student> lstUniversalEvents = getAllStudentEvents(StudentID,startTime,endTime);
List<Student> lstTriggerEvents=null;

if(lstUniversalEvents.size()>0)
{
    for (Student event1 : lstUniversalEvents) 
    {
        if(strHighSchool.equals("true"))
        {
            if(event1.getClass().equals("HIGH_SCHOOL"))
            {
                lstTriggerEvents.add(event1);
            }
        }
    }
}

lstTriggerEvents.add(event1);行抛出java.lang.NullPointerException。

故障排除,我发现了以下内容:

  1. lstUniversalEvents列表包含数据。
  2. 条件if(lstUniversalEvents.size()>0)被通过
  3. 条件if(strHighSchool.equals("true"))被通过
  4. 条件if(event1.getClass().equals("HIGH_SCHOOL"))被通过
  5. 所以基本上,它没有将事件添加到新列表lstTriggerEvents。

    我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

你从未初始化lstTriggerEvents,它仍然是空的。 将声明更改为

List<Student> lstTriggerEvents=new ArrayList<Student>();

声明变量时必须初始化变量,否则JVM会分配默认值。对于参考类型(如列表),该值为null

答案 1 :(得分:2)

lstTriggerEvents设置为null以外的其他内容。

List<Student> lstTriggerEvents = new ArrayList<Student>();

或者,在Java 7 +中,

List<Student> lstTriggerEvents = new ArrayList<>();

答案 2 :(得分:0)

您没有初始化lstTriggerEvents列表。它是空的。试试

List<Student> lstTriggerEvents= new ArrayList<Student>