java - 如何在检查是否存在 Java 8 Optional 时返回值?

标签 java java-8 option-type

我如何返回一个值,但确保检查 .get() 有效?

假设date是一个 Optional<String> .

methodThatTakesStringParam(date.ifPresent(s->s.get().replace("-", ""))) );  

如果我只是使用它并执行 .get,如果它不存在,它就会抛出!

methodThatTakesStringParam( date.get().replace("-", "") );  

我该如何处理?我看到的所有例子都是这样的

date.ifPresent(System.out.println("showing that you can print to io is useless to me =)") 

但在这种情况下我想返回一个字符串——如果 .ifPresent() 为假,则为空字符串。

最佳答案

听起来你想要的是:

methodThatTakesStringParam(date.map(s->s.replace("-", ""))).orElse(""));

(参见 the Javadoc for Optional<U>.map(Function<? super T,? extends U>) date.map(s->s.replace("-", "")) 大致相当于 date.isPresent() ? Optional.of(date.get().replace("-", "")) : Optional.empty() 。)


编辑添加:也就是说,在这种特定情况下,编写起来可能更简单:

methodThatTakesStringParam(date.orElse("").replace("-",""));

"".replace("-","")给出 ""无论如何。

关于java - 如何在检查是否存在 Java 8 Optional 时返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28921487/

相关文章:

java - 如何使用正则表达式显示数字? (安卓)

java - 如何使用虚线作为单元格边框?

java - 部署 Play Framework 无法找到或加载主类

java - 从文件中读取加密数据

java - 如何创建正则表达式匹配流?

java - Java 8 是否缺少 OptionalBoolean?

linux - 在 Linux 系统中安装 java 时出现错误

java - HttpsURLConnection 频繁出现 504 错误

swift - 什么时候使用 obj!.attr 和 obj?.attr?

java - 使用 Optional 验证输入