运行没有任何参数不起作用的函数

时间:2018-04-09 04:45:09

标签: java api

我尝试在不传递函数中的任何参数的情况下运行函数。

// 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()

2 个答案:

答案 0 :(得分:1)

你现在能做的最好就是使用下一个lambda:

response -> {}

无法在java中传递必需的参数。不是在这种情况下,不在其他情况下。

答案 1 :(得分:0)

  

我想知道为什么必须这样做,以及是否有办法不这样做。

BinanceApiCallbackAdapter类接受BinanceApiCallback的一个实例,这样它就可以调用onResponse方法,如果你传递的是null,那么当适配器类试图调用onResponse方法时,它就会在null上这样做。这就是你收到错误的原因。