簡體   English   中英

這個代碼塊出了什么問題?

[英]What's wrong with this code block?

我試圖從實體對象列表中過濾掉一些數據。 這是我的示例代碼:

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"))被通過

所以基本上,它沒有將事件添加到新列表lstTriggerEvents。

我該如何解決?

你從未初始化lstTriggerEvents ,它仍然是null。 將聲明更改為

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

聲明變量時必須初始化它,否則JVM會分配默認值。 對於引用類型(如列表),該值為null

通過將lstTriggerEvents設置為null以外的null

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

或者,在Java 7+中,

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

您沒有初始化lstTriggerEvents列表。 它是空的。 嘗試

List<Student> lstTriggerEvents= new ArrayList<Student>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM