在本教程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是一个接口。据我所知,接口无法实例化。这怎么可能?

最佳答案

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

new AsyncCallback() {
    ...
}


等效于此:

public class MyCallback implements AsyncCallback {
    ...
}


实际上,如果愿意,您可以在单独的Java文件中创建自己的class,将其命名为MyCallback,然后执行以下操作:

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


这都一样。

关于java - 为什么在GWT中实例化接口(interface)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10320868/

10-11 21:36