この記事では、Javaでの一時的なキーワードの使用を分析します。参照のためにそれを共有してください。特定の分析は次のとおりです。
Javaには、シリアル化の機能があります。このクラスは、もちろんファイルの形で存在する場合があります。これにより、ネットワーク上の一部の操作が大幅に促進されますが、同時に、セキュリティの問題を伴うため、クラスにすべてを保存することを意図していないためです(そのようにして、他の人はシリアル化を通じてクラスのコンテンツを知ることができます)。キーワードの過渡を使用できます。つまり、一時的なことです。つまり、クラスでローカルにシリアル化されることはないため、復元後、このキーワードで定義された変数は存在しなくなります。
通常、私たちが書いているプログラムは、特定の情報をデスクに保存するか、同じプログラムの別のプログラムで使用することができますオブジェクトのシリアル化のサポート。クラスインスタンスの永続性は、クラスのドメインの状態を保存し、将来アクセスできるようにします。ただし、すべてのドメインを保存する必要があるわけではありません。その中の一部のドメインを持続する必要はありません。 。
まず、Javaのシリアル化コードを見てみましょう。
Public LoggingInfoは、java.io.serializable {new date()を実現します。 ){文字列パスワード= null(pwd == null){not set ";日付: " + loggingdate.toString() +"/nパスワード: " +パスワード;}}次に、このクラスのインスタンスを作成し、シリアル化してから、ディスクのようなこのシリアル化されたオブジェクトを書きます。
LoggingInfo loginfo = new logginginfo( "Mike"、 "Mechanics"); (loginfo); o.close() ; LoggingInfo loginfo =(logginginfo)read.out.println(loginfo.tostring());
このコードを実行すると、ディスク印刷パスワードからオブジェクトが読み取られている(シリアル化解除))が「設定されていない」と気付くでしょう。これは、PWDドメインを一時的なものとして定義するときに予想される正しい結果です。
さて、一時的なドメインの不注意な扱いから生じる可能性のある潜在的な問題を見てみましょう。クラスの定義を変更し、過渡ドメインにデフォルト値を提供すると仮定します。コードは次のとおりです。
PublicLogginginfoは、java.io.serializable {new date()uid {uid = "guest"; {//上記と同じ}}これで、GuestLoggingInfoのインスタンスを通過してディスクに書き込み、ディスクから読み出しても、Readbackオブジェクトの印刷パスワードは「設定されていない」と表示されます。
クラスのインスタンスがディスクから読み取られると、このクラスのコンストラクターは実際には実行されません。
代わりに、このクラスのオブジェクトの永続的な状態がロードされ、この状態はこのクラスの別のオブジェクトに割り当てられます。
この記事がみんなのJavaプログラミングに役立つことを願っています。