Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该使用番石榴谓词还是Java谓词?_Java_Guava_Predicate - Fatal编程技术网

我应该使用番石榴谓词还是Java谓词?

我应该使用番石榴谓词还是Java谓词?,java,guava,predicate,Java,Guava,Predicate,据我所知,在Java8中引入谓词之前,Guava中的谓词是为了填补Java中的空白而创建的。现在,当Java中有这样的功能时,使用Guava谓词仍然有意义吗?这有什么附加值吗?如果你有机会使用Java 8,那就“努力吧” 从历史上看,早在Java8正式化之前,Guava就定义了谓词、或函数和其他类似的“功能接口”(现在称为功能接口),这是事实;实际上,它们是一样的 但不同的是,Java8引入了语法,充分利用了JSR292的功能,这就是为什么Objects::nonNull是有效的(Java.ut

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

如果你有机会使用Java 8,那就“努力吧”

从历史上看,早在Java8正式化之前,Guava就定义了
谓词
、或
函数
和其他类似的“功能接口”(现在称为功能接口),这是事实;实际上,它们是一样的

但不同的是,Java8引入了语法,充分利用了JSR292的功能,这就是为什么
Objects::nonNull
是有效的(Java.util.function.)
谓词的原因

因此,虽然Guava在很多方面都“早于”Java8,但如果您使用Java8,那么就使用Java8。使用Java的函数,而不是Guava的,等等。如果你已经有Guava的接口实例,你可以很容易地在Java8中重用它们;例如,给定一个番石榴谓词,将其转换为Java 8谓词非常简单:

myPredicate::apply

不,不是这样。在Java8开始正式化之前,Guava已经有了Looong谓词。如果您使用Java8,您也可以使用Java8提供的,特别是因为您可以重用Guava谓词(如果有的话),使用方法引用。在Guava中使用谓词的一个想法是,您可以与它的其他API进行互操作,例如与Iterables。在某些情况下,这不是仍然喜欢Guava而不是Java谓词的一个很好的理由吗?或者Java是否以lambda表达式的形式提供了替代方案?谢谢。看看你今天是如何使用Iterables的;如果您可以看到一个简单的流替换,那么为什么不呢。当然,不要马上去更换所有的东西。动动脑筋:)然后这是一个很好的机会来看看Java 8提供了什么——这是很多:)“是的,我们希望每个人都有动力迁移到新标准。”@EugeneS只要你使用lambdas和方法引用,你就可以使用任何一种都可以接受的方法。