前の例では、このフォーマッタの出力は、次のようになります。</SOAP-ENV:Body></SOAP-ENV:Envelope>シリアル化可能な属性を継承できないことに注意してください。新しいクラスを派生させる場合は、新しいクラスも属性でマークする必要があります。シリアル化することはできません。n3;}シリアル化属性の使用は便利ですが、前述のように制限があります。選択的シリアル化クラスには、シリアル化できないフィールドが含まれていることがよくあります。格納されているとします。格納されたスレッドが実行されなくなった可能性があるため、この値をシリアル化しても意味がありません。インターフェイスを実装します。これは、逆シリアル化後にメンバー変数の値が無効になっているが、オブジェクトの完全な状態を再構築するために変数に値を指定する必要がある場合に特に便利です。メソッドと、オブジェクトが逆シリアル化されるときに使用される特別なコンストラクターの実装が含まれます。実装する方法を示しています。オブジェクトを設定する必要があります。名前と値のペアとしてシリアル化する変数を追加するだけです。名前には、任意のテキストを使用できます。追加されるメンバー変数を自由に決定できます。メソッドを呼び出す必要があります。特殊なコンストラクターの両方を実装する必要があることを強調することが重要です。見つからない場合、コンパイラから警告が表示されますが、コンストラクターの実装を強制することは不可能であるため、コンストラクターがない場合は警告は表示されず、コンストラクターなしでクラスを逆シリアル化しようとすると例外がスローされます。メソッドの上で優先されていました。メソッドを複数回呼び出すのを防ぐコードを記述する必要があります。メソッドを呼び出す悪意のあるアプリケーションによって引き起こされる可能性のある頭痛の種を想像できます。この目的で提供されるコンストラクターを使用してクラスに渡されます。オブジェクトが逆シリアル化されると、コンストラクターに配置された可視性制約はすべて無視されるため、クラスをパブリック、保護、内部、またはプライベートとしてマークできます。クラスがシールされていない限り、コンストラクターを保護することをお勧めします。その場合、コンストラクターはプライベートとしてマークする必要があります。変数の値を取得するだけです。実装している場合は、基本オブジェクトが変数を復元できるように、基本コンストラクターを呼び出す必要があります。メソッドの両方を実装する必要があります。クラスを使用してこれを行う方法を示しています。}}逆シリアル化コンストラクターで基底クラスを呼び出すのを忘れないでください。これが行われなければ、基底クラスのコンストラクターは呼び出されず、逆シリアル化後にオブジェクトが完全に構築されることはありません。オブジェクトは内側から再構築され、逆シリアル化中にメソッドを呼び出すと望ましくない副作用が発生する可能性があります。呼び出し元のメソッドは、呼び出しが行われた時点で逆シリアル化されていないオブジェクト参照を参照する可能性があるためです。メソッドが自動的に呼び出されます。この時点で、参照されているすべての子オブジェクトが完全に復元されます。リスナーを使用せずに逆シリアル化するのが困難なクラスの一般的な例です。テーブルから派生したクラスが逆シリアル化されている保証がないため、問題が発生する可能性があります。テーブルのメソッドを呼び出すことはお勧めできません。メソッドが呼び出されると、オブジェクトのシリアル化は次の規則に従って続行されます。セレクターがあるかどうかを確認します。セレクターが指定された型のオブジェクトを処理するかどうかを確認します。属性でマークされているかどうかを確認するチェックが行われます。実装しているかどうかを確認します。実装していない場合は、既定のシリアル化ポリシーが使用され、非シリアル化としてマークされていないすべてのフィールドがシリアル化されます。サイド実行のサポートが提供され、クラスのインターフェイスが変わらない場合は、すべてのクラスがバージョン間で機能します。シリアル化はインターフェイスではなくメンバー変数を扱うので、バージョン間でシリアル化されるクラスにメンバー変数を追加または削除する場合は注意が必要です。実装しないクラスに特に当てはまります。メンバー変数の追加、変数の型の変更、名前の変更など、現在のバージョンの状態の変更は、以前のバージョンでシリアル化された場合、同じ型の既存のオブジェクトを正常に逆シリアル化できないことを意味します。つの選択肢があります。これにより、シリアル化と逆シリアル化のプロセスを正確に制御できるため、逆シリアル化中に将来の状態を正しく追加および解釈できます。非正規化された属性を使用して、不要なメンバー変数をマークします。このオプションは、クラスの異なるバージョン間で軽微な変更が予想される場合にのみ使用してください。してマークして、クラスが以前のバージョンと互換性を保たれるようにすることができます。シリアル化のガイドライン新しいクラスを設計する場合は、コンパイル後にクラスをシリアル化できないため、シリアル化を検討する必要があります。ドメイン間でこのクラスを送信する必要がありますか。このクラスをリモート処理で使用する可能性があるかどうかについて検討します。シリアル化する必要がある新しいクラスを私から派生させるかもしれません。判断に迷った場合は、クラスをシリアル化可能としてマークします。次の場合を除き、すべてのクラスをシリアル化可能としてマークすることをお勧めします。ドメインを越えることはありません。クラスを派生させます。クラスには、クラスの現在のインスタンスにのみ適用できる特別なポインターが格納されます。ハンドルが含まれている場合は、これらのフィールドが非シリアル化としてマークされているか、クラスをまったくシリアル化しないことを確認します。メンバーには機密情報が含まれています。実装し、必要なフィールドのみをシリアル化することをお勧めします。