JVM全体のカスタム・フィルタの設定

特定のストリームでオーバーライドされないかぎり、ObjectInputStreamのすべての使用に適用されるJVM全体のフィルタを設定できます。アプリケーション全体で必要とされるすべてのタイプと条件を識別できる場合、フィルタはこれらを受け入れ、残りを拒否できます。通常、JVM全体のフィルタを使用して、特定のクラスまたはパッケージを拒否したり、配列サイズ、グラフ深度または合計グラフ・サイズを制限します。

JVM全体のフィルタは、ObjectInputFilter.Configクラスのメソッドを使用して1回設定されます。フィルタは、クラスのインスタンス、ラムダ式、メソッド参照またはパターンにすることができます。

ObjectInputFilter filter = ...
ObjectInputFilter.Config.setSerialFilter(filter);

次の例では、JVM全体のフィルタがラムダ式を使用して設定されます。

ObjectInputFilter.Config.setSerialFilter(
    info -> info.depth() > 10 ? Status.REJECTED : Status.UNDECIDED);

次の例では、JVM全体のフィルタがメソッド参照を使用して設定されます:

ObjectInputFilter.Config.setSerialFilter(FilterClass::dateTimeFilter);