2012-04-25 48 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

相關問題