141. Introducing JDK 17 easy filter creation
Starting with JDK 17, we can express filters more intuitively and readably via two convenient methods named allowFilter()
and rejectFilter()
. And, since the best way to learn is with an example, here is a usage case of these two convenient methods:
public final class Filters {
private Filters() {
throw new AssertionError("Cannot be instantiated");
}
public static ObjectInputFilter allowMelonFilter() {
ObjectInputFilter filter = ObjectInputFilter.allowFilter(
clazz -> Melon.class.isAssignableFrom(clazz),
ObjectInputFilter.Status.REJECTED);
return filter;
}
public static ObjectInputFilter rejectMuskmelonFilter() {
ObjectInputFilter filter = ObjectInputFilter.rejectFilter(
clazz -> Muskmelon.class.isAssignableFrom(clazz),
ObjectInputFilter.Status.UNDECIDED);
return filter;
}
}
The allowMelonFilter()
relies on ObjectInputFilter.allowFilter()
to allow only objects that...