java - Java 可选映射和 orElse 的链接(if-else 样式)

标签 java option-type

Java 中是否有一种优雅且流式的方式来表示“如果该值存在,则将此可选值映射到另一个带有计算值的可选值,否则返回一个空的可选值”?

我想到了这样的事情:

Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount = amount
    .map(theAmount -> FastMoney.of(theAmount, "EUR")).orElse(Optional.empty());

但这不可能。

我提出的解决方案有点冗长并且不像流式传输:

Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount = amount.isPresent() ?
          Optional.of(FastMoney.of(amount.get(), "EUR")) : Optional.empty();

最佳答案

您不需要 orElse 子句:

Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount =
    amount.map(theAmount -> FastMoney.of(theAmount, "EUR"));

关于java - Java 可选映射和 orElse 的链接(if-else 样式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47571787/

相关文章:

java - IntelliJ IDEA生成的Spring Boot项目Artifact导致错误

java - 如何在 MongoDB(Java) 中使用搜索条件(在我的例子中是电子邮件)检索单个字段(在我的例子中是密码)?

Swift: "Value of optional type ' (Int, Int) ?' not unwrapped; did you mean to use ' !' or ' ?'?

swift - 为什么我不能使用 Swift 解包这个可选值?

swift - 有人可以向我详细解释如何正确地为 UIView 创建自定义初始化程序吗?

ios - 如何将 PFObject 转换为字符串? - Swift 1.2 Xcode 6.4 和 Parse.com -

java - Guava 的 Optional.or() 的预期行为是什么?

java - 类定义中的序列版本 ID

java - Spring库中的REST(RestTemplate)是否支持HTTPS协议(protocol)?

java - 扫描另一个包中的存储库