我正在尝试从实体对象列表中过滤掉一些数据。这是我的示例代码:
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。
故障排除,我发现了以下内容:
lstUniversalEvents
列表包含数据。if(lstUniversalEvents.size()>0)
被通过if(strHighSchool.equals("true"))
被通过if(event1.getClass().equals("HIGH_SCHOOL"))
被通过所以基本上,它没有将事件添加到新列表lstTriggerEvents。
我该如何解决这个问题?
答案 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>