java - 如何在java 8中过滤Optional.empty

标签 java java-8 option-type

我想用 0 过滤值以打印消息无效,但我得到的结果是Optional.empty

 Long l = 0L;
 Optional<String> l2 = Optional.of(l).filter(t -> t>0).map(t ->t.toString());
 Optional<String>l3 =l2.filter(String::isEmpty).map(t ->"invalid");
 System.out.println(l3);

需要返回类型为Optional<String>

预期输出 - Invalid
实际输出 - Optional.empty

已更新

需要返回类型为String

预期输出 - Invalid value 0
实际输出 - Optional.empty

最佳答案

无需使用Optional或过滤器,您所需要的只是:

String l3 = l > 0 ? l.toString() : "Invalid";

如果你想处理 null 那么:

String l3 = (l != null && l > 0) ? l.toString() : "Invalid";

如果您想在无效情况下显示数字,则:

String l3 = (l != null && l > 0) ? l.toString() : String.format("Invalid %d", l);

关于java - 如何在java 8中过滤Optional.empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59533197/

相关文章:

c++ - 如何正确使用带有公共(public)成员变量的类型的 boost::optional?

c++ - g++/libstdc++中std::optional的实现状态?

java - 从 Asciidoctor 创建 PDF 文件时出现异常

java - 如何将 .min() 或 .max() 作为流的方法参数?

java - 匹配精确字符和数字的正则表达式

java - 从 map 中获取最高 n 个数字的最简洁方法?

java - 如果不存在,如何在 Optional 上执行逻辑?

javascript - Java 和 JavaScript 之间交换 `Date` 的最佳实践,考虑 DST

java - Android 使用 Volley 从网络服务器下载文件

java - Grails中用户映射的部分打开错误