-
- 関数型インタフェース:
- これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。
@FunctionalInterface public interface ObjectInputFilter
直列化復元時のクラス、配列の長さ、およびグラフのメトリックをフィルタリングします。ObjectInputStream
に設定すると、クラス、各配列の長さ、ストリームから読み取られるオブジェクトの数、グラフの深さ、ストリームから読み取られた合計バイト数を検証するためにcheckInput(FilterInfo)
メソッドが呼び出されます。個々のObjectInputStreamに対して
setObjectInputFilter
を使用してフィルタを設定できます。Config.setSerialFilter
を使用してフィルタを設定し、フィルタを設定しないObjectInputStream
に影響を与えることができます。フィルタは引数が
ALLOWED
かREJECTED
かどうかを判断し、適切なステータスを返します。 フィルタがステータスを判別できない場合は、UNDECIDED
を返します。 フィルタは、特定のユースケースと予想される型用に設計する必要があります。 特定の用途のために設計されたフィルタは、フィルタの範囲外のクラスを渡すことができます。 フィルタの目的がクラスをブラックリストすることである場合、他のクラスに対してUNDECIDEDと一致して報告する候補クラスを拒否することができます。null
、arrayLength
= -1、深さ、参照数、およびストリーム・サイズに等しいクラスで呼び出され、値の1つまたは一部のみを反映するステータスを返します。 これにより、フィルタは、報告する選択肢を特定し、許可または拒否のいずれのステータスも強制せずに他のフィルタを使用することができます。通常、カスタム・フィルタはプロセス全体のフィルタが構成されているかどうかをチェックし、そうであればそれを延期する必要があります。 次に例を示します。
ObjectInputFilter.Status checkInput(FilterInfo info) { ObjectInputFilter serialFilter = ObjectInputFilter.Config.getSerialFilter(); if (serialFilter != null) { ObjectInputFilter.Status status = serialFilter.checkInput(info); if (status != ObjectInputFilter.Status.UNDECIDED) { // The process-wide filter overrides this filter return status; } } if (info.serialClass() != null && Remote.class.isAssignableFrom(info.serialClass())) { return Status.REJECTED; // Do not allow Remote objects } return Status.UNDECIDED; }
特に指定のないかぎり、
null
引数をこのインタフェースとそのネストされたクラスのメソッドに渡すと、NullPointerException
がスローされます。- 導入されたバージョン:
- 9
- 関連項目:
ObjectInputStream.setObjectInputFilter(ObjectInputFilter)
-
-
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 インタフェース 説明 static class
ObjectInputFilter.Config
プロセス全体のフィルタを設定および取得する、またはパターン文字列からフィルタを作成するユーティリティ・クラス。static interface
ObjectInputFilter.FilterInfo
FilterInfoは、直列化復元されている現在のオブジェクトに関する情報とObjectInputStream
のステータスへのアクセスを提供します。static class
ObjectInputFilter.Status
クラス、配列の長さ、参照数、深さ、およびストリーム・サイズのチェックのステータス。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 ObjectInputFilter.Status
checkInput(ObjectInputFilter.FilterInfo filterInfo)
クラス、配列の長さ、オブジェクト参照の数、深度、ストリーム・サイズ、その他利用可能なフィルタ情報を確認してください。
-
-
-
メソッドの詳細
-
checkInput
ObjectInputFilter.Status checkInput(ObjectInputFilter.FilterInfo filterInfo)
クラス、配列の長さ、オブジェクト参照の数、深度、ストリーム・サイズ、その他利用可能なフィルタ情報を確認してください。 このメソッドの実装は、直列化復元中に作成されるオブジェクト・グラフの内容をチェックします。 フィルタはStatus.ALLOWED
、Status.REJECTED
、またはStatus.UNDECIDED
を返します。- パラメータ:
filterInfo
- 直列化復元されている現在のオブジェクトに関する情報と、ObjectInputStream
のステータスを返します- 戻り値:
Status.ALLOWED
が拒否された場合はStatus.REJECTED
、未確定の場合はStatus.UNDECIDED
。
-
-