首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java JSP 中 List 遍歷空指針異常的根因與修正

     編輯:程式設計綜合問答

錯誤現場

List listSonBoard = (List) mapboard.get(new Integer(mainBoard.getBoardId()));
for (int j = 0; j < listSonBoard.size(); j++) { // NullPointerException
    // ...
}

根因分析

mapboard.get(...) 回傳 null 時,直接呼叫 listSonBoard.size() 會拋出 NPE。雖然加了 if (listSonBoard != null) 判斷,但若 mainBoard.getBoardId() <= 3 時原本能顯示,加判斷後反而不顯示,說明 mapboard 中對應鍵值確實為 null,需檢查資料來源為何未放入該鍵值。

修正程式碼

List listSonBoard = (List) mapboard.get(new Integer(mainBoard.getBoardId()));
if (listSonBoard != null) {
    for (int j = 0; j < listSonBoard.size(); j++) {
        Board sonBoard = (Board) listSonBoard.get(j);
        // 後續業務邏輯...
    }
} else {
    // 記錄日誌或給預設空列表,避免前端報錯
    listSonBoard = Collections.emptyList();
}

進階建議

  • 使用 Map> 泛型避免強制轉型。
  • 資料準備階段確保 mapboard.put(boardId, new ArrayList<>()) 初始化空列表,而非留 null。
  • JSP 中盡量減少 Java 程式碼,改用 JSTL <c:forEach> 搭配 EL 表達式,自動處理 null 集合不報錯。

核心原則:集合類變數永不為 null,預設初始化為空集合,可消除絕大多數 NPE。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved