一時的に変更されたメンバー変数の場合、クラスのインスタンス オブジェクトのシリアル化プロセス中に無視されます。したがって、一時変数はオブジェクトのシリアル化および逆シリアル化中に実行されず、ライフ サイクルは呼び出し元のメモリ内にのみ存在し、永続化のためにディスクに書き込まれることはありません。
Java におけるオブジェクトのシリアル化とは、オブジェクトをバイト シーケンス形式の表現に変換することを指します。これらのバイト シーケンスには、オブジェクトのデータと情報が含まれています。シリアル化されたオブジェクトは、次のとおりです。データベースやファイルに書き込まれるか、ネットワーク送信に使用されます。一般に、キャッシュを使用する場合 (十分なメモリ領域がない場合は、ハード ディスク上にローカルに保存される場合があります)、またはリモートで rpc (ネットワーク送信) を呼び出す場合、多くの場合、エンティティ クラスに Serializable インターフェイスを実装させる必要があります。シリアル化可能です。もちろん、シリアル化後の最終的な目標は、シリアル化を解除して元の Java オブジェクト インスタンスに復元することです。したがって、シリアライズされたバイト シーケンスを Java オブジェクトに復元することができます (このプロセスはデシリアライズです)。
オブジェクトを永続化する場合、一部の特別なデータ メンバー (ユーザー パスワード、銀行カード番号など) を保存するためにシリアル化メカニズムを使用したくありません。特定のオブジェクトのメンバー変数のシリアル化をオフにするには、メンバー変数の前にキーワード transient を追加します。
Transient は Java 言語のキーワードで、メンバー変数がオブジェクトのシリアル化の一部ではないことを示すために使用されます。オブジェクトがシリアル化されるとき、一時変数の値はシリアル化の結果に含まれません。非一時的な変数が含まれます。 static によって変更された静的変数は当然ながらシリアル化できないことに注意してください。
(1)変数は一時的な変更により、オブジェクトの永続性の一部ではなくなり、シリアル化後に変数の内容にアクセスできなくなります。
(2) transient キーワードは変数のみを変更できますが、メソッドやクラスは変更できません。ローカル変数は transient キーワードでは変更できないことに注意してください。変数がユーザー定義のクラス変数の場合、クラスは Serializable インターフェイスを実装する必要があります。
(3) 静的変数は、一時的に変更されたかどうかに関係なく、シリアル化できません (クラス内の静的変数が逆シリアル化後に値を保持している場合、その値は現在の JVM 内の対応する静的変数の値になります) )。シリアル化ではオブジェクトの状態が保存され、静的変数ではクラスの状態が保存されるため、シリアル化では静的変数は保存されません。
(1) クラス内のフィールド値は他の値に基づいて導出可能長方形クラスには、長さ、幅、面積の 3 つの属性があります。面積はシリアル化する必要はありません。
(2) 一部のセキュリティ情報は、通常の状況では JVM から離れることができません。
(3) Logger インスタンスがクラスで使用されている場合、Logger インスタンスをシリアル化する必要はありません
以上がJava で transient キーワードを使用してシリアル化を制御する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。