我应该使用 Guava Predicate 还是 Java Predicate?

Should I use Guava Predicate or Java Predicate?

据我了解,Guava 中的 Predicates 是为了填补 Java 中的空白而在 Java 8 中引入 Predicates 之前创建的。现在当 Java 中有这样的功能时=13=],使用 Guava Predicates 仍然有意义吗?这有什么附加值吗?

如果有机会用到Java8,那么"go for it".

从历史上看,Guava 确实在 Java 8 出现之前很久就已经定义了 PredicateFunction 以及其他此类 "functional interfaces"(现在称为它们)甚至正规化;实际上,它们是相同的。

不同之处在于 Java 8 引入了充分利用 JSR 292 功能的语法,这就是为什么 Objects::nonNull 是有效的(java.util.function .)Predicate<Object>.

所以,虽然 Guava "predates" Java 8 在很多方面与这些接口有关,但如果你使用 Java 8,那么,使用 Java 8 . 使用 Java 的 Function,而不是 Guava 的等等 如果你已经有了 Guava 的此类接口实例,你可以很容易地在 Java 8 中重用它们;例如,给定一个 Guava 谓词,将其转换为 Java 8 谓词就像:

myPredicate::apply