Como posso usar um objeto a partir de uma expressão lambda em uma expressão lambda diferente

Melad Basil

Eu tenho esse código

service.confirm(identity, id)
                .map(confirmationResponse -> InternalToExternalResponse.mapToExternal(confirmationResponse))
                .map(externalResponse->uriBuilder.buildAuthorizeUri(externalResponse))
                .lift(auditOperatorFactory.logRequestURI(identity, AuditCategory.BOOKKEEP));

Agora eu preciso para estender a uriBuilder.buildAuthorizeUri(externalResponse)tomar confirmationResponsecomo um segundo parâmetro

Posso usar o confirmationResponseda primeira expressão lambda dentro da segunda expressão lambda? o código deve ser igual

service.confirm(identity, id)
                .map(confirmationResponse -> InternalToExternalResponse.mapToExternal(confirmationResponse))
                .map(externalResponse-**>uriBuilder.buildAuthorizeUri(externalResponse,confirmationResponse ))**
                .lift(auditOperatorFactory.logRequestURI(identity, AuditCategory.BOOKKEEP));
Pessoas Ahmeti:

Você pode passar o confirmationResponsepara o próximo lambda como o resultado de um presente. Desde que você precisa tanto, você pode criar um objeto personalizado ou utilização Paircomo esta:

service.confirm(identity, id)
                .map(confirmationResponse -> new Pair<ConfirmationResponse, ExternalResponse>(confirmationResponse, InternalToExternalResponse.mapToExternal(confirmationResponse)))
                .map(result ->u riBuilder.buildAuthorizeUri(result.second, result.first ))
                .lift(auditOperatorFactory.logRequestURI(identity, AuditCategory.BOOKKEEP));

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=196602&siteId=1
Recomendado
Clasificación