在Java 8中,可以引用使用Collection.contains(Object)
返回boolean
/ Boolean
(例如method reference syntax)的一元方法,返回等效{{1}对象方法的对象:
Predicate
此外,可以使用Predicate.negate()
:
final Set<Integer> acceptedValues = new HashSet<>();
final Predicate<Integer> isValueAccepted = acceptedValues::contains;
但是,是否没有直接否定方法引用本身的简写? - 例如,以下表达式不可编译:
final Predicate<Integer> isValueNotAccepted = isValueAccepted.negate();
final Predicate<Integer> isValueNotAccepted = acceptedValues::contains::negate;
final Predicate<Integer> isValueNotAccepted = acceptedValues::contains.negate();