メソッドとしてのカスタム・フィルタの設定
カスタム・フィルタもメソッドとして実装できます。メソッド参照はインライン・ラムダ式のかわりに使用されます。
次の例で定義されるdateTimeFilter
メソッドは、個別のストリームのカスタム・フィルタの設定のコード・サンプルで使用されています。
public class FilterClass {
static ObjectInputFilter.Status dateTimeFilter(ObjectInputFilter.FilterInfo info) {
Class<?> serialClass = info.serialClass();
if (serialClass != null) {
return serialClass.getPackageName().equals("java.time")
? ObjectInputFilter.Status.ALLOWED
: ObjectInputFilter.Status.REJECTED;
}
return ObjectInputFilter.Status.UNDECIDED;
}
}
このカスタム・フィルタは、JDKのベース・モジュールにあるクラスのみを許可します:
static ObjectInputFilter.Status baseFilter(ObjectInputFilter.FilterInfo info) {
Class<?> serialClass = info.serialClass();
if (serialClass != null) {
return serialClass.getModule().getName().equals("java.base")
? ObjectInputFilter.Status.ALLOWED
: ObjectInputFilter.Status.REJECTED;
}
return ObjectInputFilter.Status.UNDECIDED;
}