實現Serializable的class表明object可以被儲存。

被儲存的時候實際是儲存class裡的instance variable,這樣在deserialization的時候可以恢復object。

但是這些instance variable的class也需要是implement Serializable的,這樣它才可以被儲存;如果無法序列化,可以填加Transient關鍵字。

重要的code部分:

FileOutputStream file = new FileOutputStream("pond.ser");
ObjectOutputStream os = new ObjectOutputStream(file);
os.writeObject(new Pond());

Pond pond=(Pond)os.readObject();

FileOutputStream類屬於Connection stream, 它無法讀寫Object,這需要Chain stream(例如ObjectOutputStream)來完成。

所以,Serialization的過程是Object->ObjectOutputStream->FileOutputStream->File,Deserialization的過程反之。