在任何一种情况下都可以选择执行操作

Optional to perform an action in either cases

我有办法

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

我需要做一点修改,如果 confirmationRequestnull 然后调用 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 confirmationRequest != null ? 
            chooseClient(entity).confirmPayment(identity, entity, confirmationRequest) : 
            chooseClient(entity).confirmPayment(identity, entity);
}
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 returns 空,通过使用 orElseGet 如果它映射到空,它将调用此 lambda