据我所知,Predaates in Guava是为了填补Java中的空白,在Predicates被引入到Java 8之前。现在,当Java中有这样的功能时,使用Guava Predicates是否仍然有意义?那有什么附加价值吗?我应该使用Guava Predicate还是Java Predicate?
回答
如果您有机会使用Java 8,那么“去为它”。历史上,在Java 8甚至形式化之前,Guava确实定义了Predicate
或Function
和其他这样的“函数接口”(因为它们现在被称为);实际上,它们是一样的。
然而,不同的是,Java 8带来的语法最大限度地利用了JSR 292的强大功能,这就是为什么Objects::nonNull
是有效的(java.util.function。)Predicate<Object>
。因此,虽然Guava以很多方式在这些接口方面“早于”Java 8,但如果您使用Java 8,那么请使用Java 8.使用Java的函数,而不是Guava的等等。如果您已经拥有Guava的这种接口实例,你可以很容易地在Java 8中重用它们;例如,给定一个Guava谓词,把它变成一个Java 8谓词就像:
myPredicate::apply
嗨,谢谢你的回答。在Guava中使用Predicates的一个想法是,您可以与API的其余部分进行互操作,例如Iterables。在某些情况下,是不是仍然喜欢番石榴比Java谓词更好的理由?或者,Java是否提供了lambda表达式的替代形式?谢谢。 –
看看你今天如何使用'Iterables';如果你可以看到一个简单的替代流,那么为什么不呢。当然,不要一下子把所有东西都替换掉。使用你的大脑:) – fge
是的,当然:)事情是,目前我只是习惯与番石榴一起工作,因为这是我最近一直在研究的项目中使用的。现在我要开始一个新项目,所以我想我真正想问的是我是否能够使用“纯Java”来实现我在Java 8之前只能在Guava中实现的想法。 –
- 1. Java 8 Stream.skip with Predicate
- 2. ConcurrentDictionary AddOrUpdate by predicate
- 3. “Predicate Mismatch for View”是什么
- 4. Mod或Predicate总是失败
- 5. Stack Trace Prolog Predicate
- 6. RealmSwift + Multiple Predicate
- 7. antlr gated predicate
- 8. NSFetchRequest/Predicate问题
- 9. Predicate Expression filtring
- 10. PREDICATE(名称,元数)
- 11. Add CriteriaBuilder.between(Date)to Predicate?
- 12. ko.utils.arrayFirst = function(array,predicate,predicateOwner){/ * .. * /}
- 13. 我应该使用Flash还是Java?
- 14. 用API表示一个操作来测试一个`Predicate`是否比另一个`Predicate`更严格?
- 15. std :: list.sort(Predicate)编译错误
- 16. 许多predicate在条件
- 17. 使用Java 8 Predicate查找“最”正确的值
- 18. 在java中使用predicate(java.util.function.Predicate)的“最佳情况场景”
- 19. 在java中使用Predicate返回类型检索方法的值
- 20. 我使用Selenium Webdriver(Java),我应该使用ngWebDriver还是Protractor?
- 21. 如何在Spring.net中注入Predicate和Func
- 22. 如何在prolog中编写predicate convert/2?
- 23. iPhone:获取Predicate对象的indexPath
- 24. 如何反转系统.Predicate <T>
- 25. Predicate和Functor有什么区别?
- 26. 我应该使用collectionAsScalaIterable({java collection})还是Seq({java collection})。flatten?
- 27. 我应该先学习C#还是Java?
- 28. 我应该学习C#还是Java?
- 29. 我应该使用public $ var还是应该使用__construct()?
- 30. 我应该使用PurePDF还是AlivePdf
不,那不是。在Java 8甚至开始正式化之前,Guava已经有了一些预言。如果你使用Java 8,你可以使用Java 8提供的东西,特别是因为你可以重用你的Guava谓词(如果有的话),无论如何都要使用方法引用。 – fge