Попробуй в Вавре со ссылкой на метод - PullRequest
1 голос
/ 24 марта 2020

Я использую io.vavr.control.Try и пытаюсь сделать Try.run, но я не могу использовать ссылку на метод с параметром. Как я могу это исправить?

PingRequest pingRequest = new PingRequest();
PingCall pingCall = this.client.newPingCall();
//Try<Void> attempt = Try.run(pinCall::call); //A: this will work if call is a no parameter method
//Try<Void> attempt = Try.run(pinCall.call(pingRequest)); //B: I want to call it with parameter but obvious it can't: Required type: CheckedRunnable
Try<Void> attempt = Try.run(() -> pingCall.call(pingRequest)); //C: Idea pass this way, but I don't know if it's correct
attempt.onSuccess...
public PingResponse call(PingRequest input) throws InternalError {...}

1 Ответ

0 голосов
/ 24 марта 2020

Вы можете использовать ссылку на метод, если сначала поместите значение в Try, затем mapTry результирующее значение с помощью функции, предоставленной в качестве ссылки на метод:

final Try<PingResponse> responseTry = Try.success(pingRequest)
    .mapTry(pingCall::call);
...