Java transient修飾子

シリアライズ対象から除外する - transient修飾子

インスタンス化されたオブジェクトをバイト配列に変換することをシリアライズと呼びます。オブジェクトをファイルやデータベースに保存したり、ネットワークを通じて送受信したりするために使われます。

Javaでは、Serializableオブジェクトになると基本的にすべてのフィールドがシリアライズ対象になります。しかし、一時的な変数であるなどの理由で、例外的にシリアライズしたくない場合もあります。このような場合、フィールドにtransient修飾子を指定することで、シリアライズ時にそのフィールドを対象から除外できます。

class MyClass implements Serializable {
    private String value;
    private transient int tmp;    // シリアライズ対象から除外
}

どのような場合に必要か?

  • パスワードのようなセキュリティ情報をシリアライズ(Serialize)過程から除外したい場合に適用します。
  • さまざまな理由でデータを送信したくない場合に宣言できます。

参考