我最近发布的问题“ Optional.isEmpty()即将加入Java吗? ”是由名为“ RFR:8184693 :(选择)添加Optional.isEmpty ”的core-libs-dev邮件列表帖子提示的。 当前的JDK 11 Early Access构建 (例如我在本文中使用的OpenJDK JDK Early Access Build 23 )现在在“ Optional”类Optional , OptionalDouble , OptionalInt和OptionalLong上包括isEmpty()
方法。 在以前依靠Optional.isPresent()否定的情况下,这可以使表达更加流畅。 OptionalDouble.isPresent() ,! OptionalInt.isPresent()或! OptionalLong.ifPresent() ]与以前一样。
接下来的简单代码清单演示了Optional.isEmpty()
。
public static void demonstrateOptionalIsEmpty()
{final Optional<String> middleName = getMiddleName();if (middleName.isEmpty()){out.println("There is no middle name!");}
}
尽管可以使用!Optional.isPresent()
实现与Optional.isEmpty()
提供的功能相同的功能,但在常用的收集类和数据保存类的API中使用这些类型的“ isEmpty”方法仍具有优势。 !
与明确命名的方法(例如“ isEmpty()”)相比,在阅读和审阅代码时更容易遗漏符号。 拥有这种方法还可以使Optional
的API更加紧密地与检测String
[ String.isEmpty() ], Collection
[ Collection.isEmpty() ]和Map
[ Map.isEmpty() ]提供的API保持一致。
翻译自: https://www.javacodegeeks.com/2018/07/optional-isempty-available-jdk-11.html