我应该使用 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 出现之前很久就已经定义了 Predicate
或 Function
以及其他此类 "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
据我了解,Guava 中的 Predicates 是为了填补 Java 中的空白而在 Java 8 中引入 Predicates 之前创建的。现在当 Java 中有这样的功能时=13=],使用 Guava Predicates 仍然有意义吗?这有什么附加值吗?
如果有机会用到Java8,那么"go for it".
从历史上看,Guava 确实在 Java 8 出现之前很久就已经定义了 Predicate
或 Function
以及其他此类 "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