我有一个方法
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
你可以这样做:
public Single<SignatureOrder> confirmPayment(PaymentEntity entity, Identity identity, ConfirmationRequest confirmationRequest) {
return confirmationRequest != null ?
chooseClient(entity).confirmPayment(identity, entity, confirmationRequest) :
chooseClient(entity).confirmPayment(identity, entity);
}