Java 什么';这个代码块怎么了?

Java 什么';这个代码块怎么了?,java,Java,我试图从实体对象列表中筛选出一些数据。以下是我的示例代码: List<Student> lstUniversalEvents = getAllStudentEvents(StudentID,startTime,endTime); List<Student> lstTriggerEvents=null; if(lstUniversalEvents.size()>0) { for (Student event1 : lstUniversalEvents)

我试图从实体对象列表中筛选出一些数据。以下是我的示例代码:

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);
            }
        }
    }
}
List lstuversalevents=getAllStudentEvents(StudentID、startTime、endTime);
List LSTRIGGEREvents=null;
如果(lstUniversalEvents.size()>0)
{
用于(学生活动1:LST UniversalEvents)
{
if(strHighSchool.equals(“true”))
{
如果(event1.getClass()等于(“高中”)
{
lstTriggerEvents.add(事件1);
}
}
}
}
lstriggerevents.add(event1)正在抛出java.lang.NullPointerException

通过故障排除,我发现以下问题:

  • lstUniversalEvents
    列表包含数据
  • 如果(lstUniversalEvents.size()>0)
  • 已通过,则条件
    
    
  • 条件
    if(strHighSchool.equals(“true”)
    已通过
  • 条件
    if(event1.getClass().equals(“高中”)
    通过
  • 因此,基本上,它无法将事件添加到新列表LSTriggerEvents中


    如何修复此问题?

    您从未初始化过
    lstTriggerEvents
    ,它仍然为空。 将声明更改为

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

    声明变量时,必须对其进行初始化,否则JVM将分配一个默认值。对于引用类型(如您的列表),通过将
    lstriggerevents
    设置为
    null
    以外的值,该值为
    null

    List<Student> lstTriggerEvents = new ArrayList<Student>();
    
    List lstriggerievents=new ArrayList();
    
    或者,在Java 7+中

    List<Student> lstTriggerEvents = new ArrayList<>();
    
    List lstriggerievents=new ArrayList();
    
    您没有初始化LSTriggerEvents列表。它是空的。试一试

    List<Student> lstTriggerEvents= new ArrayList<Student>
    
    List lstriggerievents=new ArrayList