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

ArrayList 添加 Timestamp 類型的正確姿勢

     編輯:程式設計綜合問答

誤區澄清

ArrayList 完全支持存儲 java.sql.Timestamp 對象。報錯通常發生在取出時強轉或泛型聲明不匹配。

常見錯誤場景

// 1. 原始類型 List(無泛型)
List list = new ArrayList();
list.add(new Timestamp(System.currentTimeMillis()));
// 取出時需強轉,易拋 ClassCastException
Timestamp ts = (Timestamp) list.get(0); // 若列表混入其他類型則崩潰

// 2. 泛型擦除導致誤以為不能添加
List<Date> dateList = new ArrayList<>();
dateList.add(new Timestamp(...)); // Timestamp 繼承 Date,完全合法

最佳實踐

  1. 使用泛型:
    List<Timestamp> tsList = new ArrayList<>();
    tsList.add(Timestamp.valueOf("2024-01-01 12:00:00"));
    // 取出無需強轉,類型安全
    Timestamp first = tsList.get(0);
    
  2. 統一時間類型:項目中建議統一用 java.time.Instant 或 LocalDateTime(Java 8+),避免 java.sql.* 與 java.util.Date 混用。
  3. 序列化場景:若需存入資料庫/傳輸,優先用 Long(毫秒數)或 ISO-8601 字符串。

調試技巧

// 運行時檢查實際類型
Object obj = list.get(0);
System.out.println(obj.getClass().getName()); // 輸出 java.sql.Timestamp

「不能添加」絕大多數是「取出時強轉失敗」或「泛型聲明錯誤」的誤診。加上泛型、統一時間類型,問題迎刃而解。

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