報錯「未經檢查的類型使用」,且 `readObject()` 返回 `Object` 需強轉。根因:**文件 `timetracker.data` 內容不是合法的序列化 `ArrayList` 對象**(可能為空、損壞、或非 Java 序列化格式)。
// 1. 先寫入一個標準序列化 ArrayList
public void writeFirst() {
ArrayList list = new ArrayList<>();
list.add("hello"); list.add("world");
try (FileOutputStream fos = new FileOutputStream("timetracker.data");
ObjectOutputStream oos = new ObjectOutputStream(fos)) {
oos.writeObject(list); // 寫入對象圖
} catch (IOException e) { e.printStackTrace(); }
}
// 2. 再讀取驗證
public void readAfter() {
try (FileInputStream fis = new FileInputStream("timetracker.data");
ObjectInputStream ois = new ObjectInputStream(fis)) {
ArrayList list = (ArrayList) ois.readObject();
System.out.println(list); // [hello, world]
} catch (IOException | ClassNotFoundException e) { e.printStackTrace(); }
}
Java 序列化存取 List:**先用 ObjectOutputStream 寫標準文件**,再用 ObjectInputStream 讀並強轉。文件格式不匹配是最常見錯誤,重新生成標準文件即可解決。