首页 > 解决方案 > 在任何一种情况下都可以选择执行操作

问题描述

我有一个方法

   public Single<SignatureOrder> confirmPayment(PaymentEntity entity, Identity identity, ConfirmationRequest confirmationRequest) {
        return chooseClient(entity)
                .confirmPayment(identity, entity,confirmationRequest);
    }

我需要做一些修改,以防万一 然后confirmationRequest调用nullconfirmPayment(identity, entity);

我怎么能说这样的 Optional.ofNullable(confirmationRequest)chooseClient(entity)然后ifPresent打电话confirmPayment(identity, entity,confirmationRequest); ifNotPresentconfirmPayment(identity, entity);

的签名confirmPayment

 public Single<SignatureOrder> confirmPayment(Identity identity, PaymentEntity entity)
 public Single<SignatureOrder> confirmPayment(Identity identity, PaymentEntity entity, ConfirmationRequest confirmationRequest)

标签: javajava-8optional

解决方案


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


推荐阅读