シリアライズ・オブジェクトのストリームの読取り

1つのObjectInputStreamでカスタム・フィルタを設定できます。または、すべてのストリームに同じフィルタを適用するには、JVM全体のフィルタを設定します。ObjectInputStreamにフィルタが定義されていない場合は、JVM全体のフィルタが呼び出されます(ある場合)。

ストリームのデコード中に、次のアクションが発生します。

  • ストリーム内の新規オブジェクトごとに、およびオブジェクトがインスタンス化され、デシリアライズされる前に、初めてクラスが検出されたときにフィルタが呼び出されます。(同じクラスの後続のインスタンスはフィルタされません。)
  • ストリーム内のクラスごとに、フィルタが解決されたクラスとともに呼び出されます。これは、ストリーム内のスーパータイプおよびインタフェースごとに個別に呼び出されます。
  • フィルタは、作成されるオブジェクトのクラス、それらのクラスのスーパータイプ、そのインタフェースなど、ストリーム内で参照される各クラスを調査できます。
  • ストリームの配列ごとに、プリミティブ配列、文字配列またはオブジェクト配列のいずれであっても、配列クラスおよび配列長を指定したフィルタが呼び出されます。
  • ストリームから読み取られたオブジェクトへの参照ごとに、深さ、参照の数およびストリーム長をチェックできるフィルタが呼び出されます。深さは1から始まり、ネスト・オブジェクトごとに増加し、ネストされた呼出しが戻されるたびに減少します。
  • フィルタは、ストリームで具体的にエンコードされているプリミティブ・インスタンスまたはjava.lang.Stringインスタンスの場合は呼び出されません。
  • フィルタは、受入れ、拒否または未決定のステータスを戻します。
  • ロギングが有効になっている場合は、フィルタ・アクションがログに記録されます。

フィルタによってオブジェクトが拒否されない場合、オブジェクトは受け入れられます。