java - 在任何一种情况下都可以选择执行操作
问题描述
我有一个方法
public Single<SignatureOrder> confirmPayment(PaymentEntity entity, Identity identity, ConfirmationRequest confirmationRequest) {
return chooseClient(entity)
.confirmPayment(identity, entity,confirmationRequest);
}
我需要做一些修改,以防万一 然后confirmationRequest
调用null
confirmPayment(identity, entity);
我怎么能说这样的
Optional.ofNullable(confirmationRequest)
话chooseClient(entity)
然后ifPresent
打电话confirmPayment(identity, entity,confirmationRequest);
ifNotPresent
confirmPayment(identity, entity);
的签名confirmPayment
public Single<SignatureOrder> confirmPayment(Identity identity, PaymentEntity entity)
public Single<SignatureOrder> confirmPayment(Identity identity, PaymentEntity entity, ConfirmationRequest confirmationRequest)
解决方案
public Single<SignatureOrder> confirmPayment(PaymentEntity entity, Identity identity, ConfirmationRequest confirmationRequest) {
return Optional.ofNullable(confirmationRequest)
.map(cr -> chooseClient(entity).confirmPayment(identity, entity, cr)
.orElseGet(() -> chooseClient(entity).confirmPayment(identity, entity);
}
null 上的映射返回空,使用 orElseGet 如果它映射为空,它将调用此 lambda
推荐阅读
- selenium-chromedriver - TypeError: __init__() 得到了一个意外的关键字参数“sameSite”
- amazon-web-services - 如何为 IAM 用户组设置策略?
- c# - 如何使用 C# 连接到 LDAP 服务器
- routes - 这里建议 API 返回 PARSING_ERROR
- android - Android Rebuild(APK 工具或 APK 编辑器工作室)不更新清单中的版本号或更新图像
- robotframework - 双击机器人框架中的元素会引发错误“将目标移出边界”,而单击工作正常
- c++ - 重新排列单线以形成封闭的多边形?
- python - OSError:pytest:在捕获输出时从标准输入读取!考虑使用`-s`
- vue.js - 有没有办法在 Vue JS 中使用时区获取当前日期时间?
- javascript - 搜索表单刷新页面而不是搜索值