如何获得java.util.function.Predicate的toString的可读性

时间:2017-11-10 08:08:29

标签: java lambda guava tostring predicate

让我们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等)? (问题也与其他功能接口有关。)

谢谢!

0 个答案:

没有答案