在Vavr中尝试方法参考



我正在使用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 {...}

如果首先将值包装在Try中,然后将结果值包装为mapTry,并提供一个函数作为方法引用,则可以使用方法引用:

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

最新更新