0

通过本教程https://developers.google.com/web-toolkit/doc/latest/tutorial/RPC提到要设置回调对象,必须执行以下操作:

// Set up the callback object.
AsyncCallback<StockPrice[]> callback = new AsyncCallback<StockPrice[]>() {
  public void onFailure(Throwable caught) {
    // TODO: Do something with errors.
  }

  public void onSuccess(StockPrice[] result) {
    updateTable(result);
  }
};

但是我注意到 AsyncCallback 是一个接口。据我所知,接口无法实例化。这怎么可能?

4

2 回答 2

4

这是使用匿名类在 Java 中实现回调的示例。这相当于定义一个实现该接口的类。为了澄清,这:

new AsyncCallback() {
    ...
}

相当于:

public class MyCallback implements AsyncCallback {
    ...
}

事实上,如果您愿意,您可以class在单独的 Java 文件中创建自己的文件,调用它MyCallback,然后执行以下操作:

AsyncCallback<StockPrice[]> callback = new MyCallback();

全部都是一样。

于 2012-04-25T17:50:26.240 回答
1

这是该接口的匿名内部类实现的情况。

演示的方法经常用于实现不同的侦听器和回调。可以在此处找到有关该主题的更多信息。

于 2012-04-25T17:40:39.243 回答