オブジェクトをシリアル化するときは、を使用しObjectOutputStream
て「書き留める」とObjectInputStream
「読み戻す」のに使用します。
通常、Java実装のデフォルトの動作は、シリアル化の「一般的な使用」の多くに十分対応できます。transient
キーワードは、変数の値を保存(または復元)したくないことをJVMに指示します。変数を処理するときは特に注意する必要がtransient
あります。シリアル化されたインスタンスの復元後、変数はnullになるか、値に一貫性がなくなる可能性があります。シリアル化可能なクラスに追加することをお勧めします
private void writeObject(java.io.ObjectOutputStream out) throws IOException{
out.defaultWriteObject();
}
private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException{
in.defaultReadObject();
//here do something to re-initialize transient variables
}
このようにして、一時的であると宣言したすべてに対して特別な処理を挿入できます。(シリアル化可能なクラスのコンストラクターは、オブジェクトが読み取られるときではなく、初めて使用するときにのみ呼び出されることに注意してくださいObjectInputStream
)
シリアル化を伴わない他のすべてのコンテキストでは、transient
何も意味しません。