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!