transient 介紹
某天無意間看到了 ArrayList 的 source code,發現了一個沒看過的關鍵字:transient。寫 Android 也有幾年了,卻對 transient 完全沒概念。 Google 了一下,才知道這個關鍵字通常都是搭配 Serializable 來使用的。 什麼是 Serializable Serializable 是為了要讓 物件能序列化 而必需要實作的 marker interface。而序列化簡單說就是能 將記憶體(Memory)中的實體物件(Object Instance)以位元流(byte stream)方式儲存於永久媒體如硬碟 。之後也能從永久媒體讀取物件到記憶體,並回復到先前狀態。除了存在永久媒體之外,也可以用在網路溝通,如 socket 或 RMI。 什麼是 transient transient 為 Java 內部的一個關鍵字,其目的是告訴 JVM 有加 transient 的 member variable 不要被序列化 。因為有時候我們會希望物件能序列化,但內部有些資料卻不要記錄,像是個人資料如密碼等。如以下的程式碼: public class Foo implements Serializable { private String saveMe; private transient SomeObject dontSaveMe; private transient String password; private transient int dontSaveInt; //... } JVM 就不會把 class dontSaveMe,String password,int dontSaveInt 序列化。 Java Serializable 序列化規則 Class 中所有 primitive type 預設都是可以序列化。 成員變數 (prim...