Setting a Custom Filter as a Method
A custom filter can also be implemented as a method. The method reference is used instead of an inline lambda expression.
The dateTimeFilter
method that is defined in the following
example is used by the code sample in Setting a Custom Filter for an Individual Stream.
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;
}
}
This custom filter allows only the classes found in the base module of the 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;
}