4

Let's import java.util.function.Predicate and define following predicates:

    Predicate<String> a = ...
    Predicate<String> b = ...

The a.and(b).toString() expression returns java.util.function.Predicate$$Lambda$3/1667689440@2698dc7.

Now, let's change import to

    import com.google.common.base.Predicate;
    import com.google.common.base.Predicates;

and evaluate expression Predicates.and(a,b).toString().

We get Predicates.and(...,...).

In my usecase the original predicates have readable toString() (they are either Guava builtin predicates or anonymous classes with overridden toString()).

While Guava implements own class AndPredicate with overridden toString(), Java Predicate.and() is implemented just as a lambda. The Guava way is lot more practical for debugging or error messages.

Is there any way to get some useful info from such a Java Predicate (drill into lambda or such)? (Questions relates to other functional interfaces as well.)

Thanks!

Tomáš Záluský
  • 10,735
  • 2
  • 36
  • 64

0 Answers0