让我们import java.util.function.Predicate
并定义以下谓词:
Predicate<String> a = ...
Predicate<String> b = ...
a.and(b).toString()
表达式返回java.util.function.Predicate$$Lambda$3/1667689440@2698dc7
。
现在,让我们将导入更改为
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
并评估表达式Predicates.and(a,b).toString()
。
我们得到Predicates.and(...,...)
。
在我的用例中,原始谓词具有可读性toString()
(它们是Guava内置谓词或带有重写toString()
的匿名类)。
虽然Guava使用重写的AndPredicate
实现自己的类toString()
,但Java Predicate.and()
实现为lambda。对于调试或错误消息,Guava方式更实用。
有没有办法从这样的Java Predicate
中获取一些有用的信息(钻取到lambda等)? (问题也与其他功能接口有关。)
谢谢!