1

In Java 8, it is possible to refer to unary methods which return a boolean/Boolean (e.g. Collection.contains(Object)) using method reference syntax, returning an equivalent Predicate object for the referent method:

final Set<Integer> acceptedValues = new HashSet<>(); final Predicate<Integer> isValueAccepted = acceptedValues::contains; 

Moreover, the negation of this object can be retrieved by using Predicate.negate():

final Predicate<Integer> isValueNotAccepted = isValueAccepted.negate(); 

However, is there no shorthand for directly negating a method reference itself? — for example, the following expressions are not compilable:

  • final Predicate<Integer> isValueNotAccepted = acceptedValues::contains::negate;
  • final Predicate<Integer> isValueNotAccepted = acceptedValues::contains.negate();
  • final Predicate<Integer> isValueNotAccepted = !acceptedValues::contains;

0

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.