Необязательно выполнять действие в любом случае - PullRequest
1 голос
/ 24 апреля 2019

У меня есть метод

   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)

Ответы [ 2 ]

3 голосов
/ 24 апреля 2019
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);
}   

Отображение на ноль возвращает пустое значение, используя orElseGet, если оно отображается на пустое значение, это вызвало бы лямбду

3 голосов
/ 24 апреля 2019

Вы можете сделать это как:

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