將記憶體中的物件狀態轉為位元組序列寫入檔案,下次啟動時還原,可實現「記住視窗位置大小」、「保存遊戲進度」、「離線快取」等功能。核心類別:ObjectOutputStream(寫出)、ObjectInputStream(讀入),前提是類別實作 java.io.Serializable 標記介面。
class Employee implements Serializable {
private String name;
private double salary;
public Employee(String name, double salary) {
this.name = name; this.salary = salary;
}
@Override public String toString() {
return "name = " + name + " salary = " + salary;
}
}
public class SerializeDemo {
public static void main(String[] args) {
try {
// 建立物件
Employee e1 = new Employee("kross", 123);
Employee e2 = new Employee("ghost", 567.55);
// 寫入檔案
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("object.txt"))) {
out.writeObject(e1);
out.writeObject(e2);
}
// 讀取檔案
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("object.txt"))) {
Employee e3 = (Employee) in.readObject();
System.out.println(e3.toString()); // 輸出: name = kross salary = 123.0
}
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
private static final long serialVersionUID = 1L;,避免類別修改後反序列化報 InvalidClassException。