> 對象流指的是可以直接**把一個對象以流的形式**傳輸給其他的介質,比如硬盤。
一個對象以流的形式進行傳輸,叫做**序列化**。 該對象所對應的類,必須是實現Serializable接口
# 序列化一個對象
創建一個Hero對象,設置其名稱為garen。
把該對象序列化到一個文件garen.lol。
然后再通過序列化把該文件轉換為一個Hero對象
> 注:把一個對象序列化有一個前提是:這個對象的類,必須實現了Serializable接口
Hero.java:
```
package com.dodoke.util;
import java.io.Serializable;
public class Hero implements Serializable {
// 表示這個類當前的版本,如果有了變化,比如新設計了屬性,就應該修改這個版本號
private static final long serialVersionUID = 1L;
public String name;
public float hp;
}
```
測試類:
```
package com.dodoke.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class TestSteam12 {
public static void main(String[] args) {
// 創建一個Hero garen
// 要把Hero對象直接保存在文件上,務必讓Hero類實現Serializable接口
Hero h = new Hero();
h.name = "garen";
h.hp = 616;
// 準備一個文件用于保存該對象
File f = new File("d:/garen.lol");
try (
// 創建對象輸出流
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
// 創建對象輸入流
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);) {
oos.writeObject(h);
Hero h2 = (Hero) ois.readObject();
System.out.println(h2.name);
System.out.println(h2.hp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```