使用 JDBC 從 MySQL 讀取 INT 欄位資料存入 ArrayList<Integer> 時,若資料庫欄位為 NULL,直接 rs.getInt() 會回傳 0,但若使用 rs.getObject() 並轉型為 Integer,則會得到 null,導致加入 ArrayList<Integer> 時拋出 NullPointerException(因自動拆箱)。
List<Integer> list = new ArrayList<>();
while (rs.next()) {
Integer val = (Integer) rs.getObject("score"); // 可能為 null
list.add(val); // 若 val 為 null,自動拆箱時拋 NPE
}
Object obj = rs.getObject("score");
if (obj != null) list.add((Integer) obj);
else list.add(0); // 或預設值
rs.getInt() 並配合 wasNull():
int val = rs.getInt("score");
if (rs.wasNull()) list.add(0);
else list.add(val);
ALTER TABLE t MODIFY score INT DEFAULT 0;,確保不會出現 NULL。建議採用方案 2,語意清晰且效能最佳;同時在資料庫設計階段即為數值欄位設定 NOT NULL DEFAULT 0,從源頭杜絕問題。