“你好,阿米戈!我想再告訴你一個關於連載的小細節。”

假設我們的類包含對某些InputStream 的引用。那就不能連載了吧?

“對。你自己說過流不能被序列化。而且你不能序列化一個包含不可序列化數據的對象。”

“對。就是這樣。但是,如果該類存儲的數據在其狀態中沒有發揮重要作用,但又阻止該類被視為可序列化類呢?沒關係,一個類可能存儲不必要的東西。它可以扔掉這個隨時獲取數據,甚至可能一直如此。”

對於這些情況,Java 的創建者想出了transient關鍵字。如果我們把this關鍵字寫在一個成員變量之前,那麼它在序列化的時候就會被忽略。它的狀態不會被保存或重建。就好像它不存在一樣。這只是我們剛剛考慮的情況。

還記得緩存和volatile修飾符嗎?沒有沒有例外的規則

這是這種幸福的一個這樣的例子:

帶有對序列化不可見的變量的 «cat» 示例:

代碼
class Cat implements Serializable
{
 public String name;
 public int age;
 public int weight;

 transient public InputStream in = System.in; 
}