JDK-8184693请求将方法isEmpty()
添加到JDK 8引入的Optional类中。 调用Optional.isEmpty()
等效于调用! Optional.isPresent()
! Optional.isPresent()
。 当前没有与JDK-8184693关联的JDK版本 ,但是正如最近在core-libs-dev邮件列表中的标题为“ RFR:8184693:(opt)add Optional.isEmpty ” 所示 ,它正在积极地工作。
JDK-8184693由Stuart Marks在2017年7月撰写,为添加Optional.isEmpty()
提供了一些有趣的理由。 Marks指出:“通常,我们避免添加彼此简单逆的方法”,并举例说明String.isEmpty()和Collection.isEmpty()的存在,而没有任何随附的String.notEmpty()
或Collection.nonEmpty()
对应项。 Marks认为这种方法在这些情况下效果很好,因为“空/非空不是根本”对他们来说:“对于这些对象,对空字符串(例如,搜索或附加它)或集合(例如, ,对其进行迭代)。”
在JDK-8184693 ,商标是确实有方法来明确表达双方的空虚和非空虚例子写道。 他写道:“但是,使用引用,null / non-null是非常基本的,我们有O bjects.isNull和Objects.nonNull 。” 因为这些示例的用法更像Optional
的用法,所以Marks认为Optional
应该在其当前的isPresent()
方法旁边有一个isEmpty()
isPresent()
方法:“与Optional
相似,空/当前二分法是非常基本的,因此应该isEmpty
和isPresent
一起。”
JDK-8184693中的大多数证明文本已于本月(2018年4月)添加,并包含指向Peter Levart的2017年4月core-lib-devs邮件列表帖子“ Optional.isEmpty() ”的链接。 该错误的撰写总结了这篇文章开始的一些讨论。 在消息线程包括那些提供幽默 ,参考bikeshedding ,列表“ 大量的单行不使用布尔否定 ,”建议名称isNotPresent()或isAbsent() ,提供热情支持的的想法的Optional.isEmpty()
,并提醒“ 将方法添加到Optional的标准设置得很高 。”
前面提到的邮件列表消息“ RFR:8184693:(opt)add Optional.isEmpty ”引用了可供查阅的代码 。 拟议更改的Optional.java
的“ Sdiff ”表明该方法已实现。 但是, 仍需要对OptionalDouble , OptionalLong和OptionalInt进行类似的更改 。
正如我在Java代码中使用Optional
,当我不需要使用Optional.isPresent()
时,我会体会到时间。 但是,有时无法解决问题,我期待添加Optional.isEmpty()
来代替!Optional.isPresent()
。 Optional.isEmpty()
是一件小事,但我相信它将使我的代码更易读和更流畅。 我希望它很快就会在我附近的JDK上发布。
翻译自: https://www.javacodegeeks.com/2018/04/optional-isempty-coming-to-java.html