栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

内置Java 8谓词始终返回true?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

内置Java 8谓词始终返回true?

Java 8中没有内置的永远为真和永远为假的谓词。最简单的编写方式是

x -> true

x -> false

比较这些

Predicates.alwaysTrue() // Guava

最后是一个匿名的内部类:

new Predicate<Object>() {    public boolean test(Object x) {        return true;    }}

Guava具有这些内置谓词的原因可能是静态方法调用比匿名内部类具有巨大的语法优势。在Java
8中,lambda语法非常简洁,以至于写出静态方法调用存在语法上的 缺点

不过,这只是语法比较。如果存在单个全局始终为真的谓词,那么与

x ->true
散布在多个类中的事件相比,这可能会有很小的空间优势,每个类都将创建自己的谓词实例。这是您所关心的吗?节省似乎并不引人注目,这可能就是为什么不首先添加它们的原因。但是可以在将来的发行版中重新考虑。

更新2015-04-24

我们认为除了各种静态的,命名功能,如

Predicate.alwaysTrue
Runnable.noop
等,我们已决定不添加任何更多的在Java
SE的未来版本。

当然,具有名称与已写出的lambda的值中有些值,但是这个值很小。我们希望人们将学习如何阅读和书写

x -> true
() -> {}
并且他们的用法将成为习惯用法。甚至
Function.identity()
超过的价值
x -> x
也值得怀疑。

重用现有功能而不是评估已写出的lambda在性能上有很小的优势,但是我们期望这些功能的使用量很小,以至于这种优势可以忽略不计,当然不值得API夸大。

Holger在评论中还提到了优化诸如此类的组合函数的可能性

Predicate.or
。这也被认为是(JDK-8067971),但被认为有些脆弱并且容易出错,并且发生的频率不高,因此不值得进行努力。

另请参阅此Lambda FAQ条目。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430881.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号