2012-04-25 76 views
0

通过本教程https://developers.google.com/web-toolkit/doc/latest/tutorial/RPC中提到,要建立一个呼叫再回到对象,必须做到以下几点:为什么在GWT中实例化一个接口?

// 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是一个接口。据我所知,接口不能被实例化。这怎么可能?

+1

匿名实现和接口的自发实例化。这是由于Java,而不是GWT。您可以将它用于任何Java接口,并且Eclipse会提示您实现未实现的方法。 – 2012-04-25 22:12:12

回答

4

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

new AsyncCallback() { 
    ... 
} 

是相同的:

public class MyCallback implements AsyncCallback { 
    ... 
} 

事实上,如果你想,你可以在一个单独的Java文件创建自己的class,称之为MyCallback,然后执行此操作:

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

这一切都是一样的。

1

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

演示的方法非常经常用于实现不同的听众和回调。有关该主题的更多信息,请参见here

相关问题