我尝试在不传递函数中的任何参数的情况下运行函数。
// This is what I'm trying to run:
cl.ping(null);
// Here's the setup for the `ping()` function:
public void ping(BinanceApiCallback<Void> callback) {
this.binanceApiService.ping().enqueue(new BinanceApiCallbackAdapter(callback));
}
@FunctionalInterface
public interface BinanceApiCallback<T> {
void onResponse(T var1);
default void onFailure(Throwable cause) {
}
}
当我运行时,应用程序崩溃并出现以下错误:
java.lang.NullPointerException:尝试调用接口方法&#39; void com.binance.api.client.BinanceApiCallback.onResponse(java.lang.Object)&#39;在空对象引用上
我尝试不在括号中插入任何内容,但是我收到错误说
BinanceApiAsyncRestClient中的ping(BinanceApiCallback
<Void>
)无法应用于()
所以他们基本上强迫我添加一个回调。像这样:
cl.ping(response -> System.out.println("I just finished ping()"));
问题:
如何在不传递任何内容的情况下致电ping()
?
答案 0 :(得分:1)
你现在能做的最好就是使用下一个lambda:
response -> {}
无法在java中传递必需的参数。不是在这种情况下,不在其他情况下。
答案 1 :(得分:0)
我想知道为什么必须这样做,以及是否有办法不这样做。
BinanceApiCallbackAdapter类接受BinanceApiCallback的一个实例,这样它就可以调用onResponse
方法,如果你传递的是null,那么当适配器类试图调用onResponse
方法时,它就会在null上这样做。这就是你收到错误的原因。