個別のストリームのカスタム・フィルタの設定
ストリームへの入力が信頼されず、フィルタにクラスの限定セットがあったり、制約が施行される場合、個別のObjectInputStreamにフィルタを設定できます。たとえば、ストリームに数値、文字列およびその他のアプリケーションに固有のタイプのみが確実に含まれるようにできます。
setObjectInputFilterメソッドを使用して、カスタム・フィルタが設定されます。オブジェクトがストリームから読み取られる前にカスタム・フィルタを設定する必要があります。
次の例では、setObjectInputFilter メソッドがdateTimeFilter
メソッドを使用して呼び出されます。このフィルタは、java.timeパッケージのクラスのみを受け入れます。dateTimeFilter
メソッドは、メソッドとしてのカスタム・フィルタの設定のコード・サンプルで定義されています。
LocalDateTime readDateTime(InputStream is) throws IOException {
try (ObjectInputStream ois = new ObjectInputStream(is)) {
ois.setObjectInputFilter(FilterClass::dateTimeFilter);
return (LocalDateTime) ois.readObject();
} catch (ClassNotFoundException ex) {
IOException ioe = new StreamCorruptedException("class missing");
ioe.initCause(ex);
throw ioe;
}
}