java8 orelse_Java 8可选的orElse可选

本文探讨了在Java 8中使用Optional类型的orElse方法进行服务调用的常见模式。当一个服务返回的Optional为空时,如何优雅地调用另一个服务。文章提到了一个期望的orElseOptional方法,但目前Java API并未提供。文中给出了多种解决方案,包括使用orElseGet和Stream API,以及对JDK 9新增功能的提及。
摘要由CSDN通过智能技术生成

Java 8可选的orElse可选

我一直在使用Java 8中的新的可选types ,并且遇到了一个看起来像一个常见的操作,但是在function上不受支持:“orElseOptional”

考虑以下模式:

Optional resultFromServiceA = serviceA(args); if (resultFromServiceA.isPresent) return result; else { Optional resultFromServiceB = serviceB(args); if (resultFromServiceB.isPresent) return resultFromServiceB; else return serviceC(args); }

这种模式有很多种forms,但是它归结为想要一个可选的“orElse”,它带有一个产生一个新的可选的函数,只有当前函数不存在时才被调用。

它的实现看起来像这样:

public Optional orElse(Supplier> otherSupplier) { return value != null ? this : other.get(); }

我很好奇,如果有这样的一个方法不存在的原因,如果我只是用一个意想不到的方式使用可选,以及人们提出了什么其他方式来处理这种情况。

我应该说,我认为涉及自定义实用程序类/方法的解决scheme并不优雅,因为使用我的代码的人不一定知道它们存在。

另外,如果有人知道,这个方法是否会包含在JDK 9中,我可以在哪里提出这样一个方法? 这似乎是API的一个非常明显的遗漏给我。

这是orforms的JDK 9的一部分,它采用Supplier

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值