3

私は JavaScript の経験はありますが、Java は初めてです。関数を別の関数のパラメーターとして渡す方法を理解しようとしています。JavaScript では、これは図 1 のブロックのようになります。

図1

function fetchData(url, callback) {

    // Do ajax request and fetch data from possibly slow server

    // When the request is done, call the callback function
    callback(ajaxResponse);

}

Javaでこれを行う同様の方法はありますか? 私はインターネットを検索しましたが、初心者レベルで役立つものはほとんど見つかりませんでした.

4

1 に答える 1

2

残念ながら、(私が知っている) 唯一の同等の方法は、fetchDataメソッドがパラメーターとして受け入れるインターフェイスを定義し、そのインターフェイスを使用して匿名の内部クラスをインスタンス化することです。または、fetchDataメソッドを呼び出すクラスは、そのインターフェイス自体を実装し、メソッドを使用して独自の参照を渡すことができますthis

これは、「コールバック」を受け入れるメソッドです。

public void fetchData(String url, AjaxCompleteHandler callback){
    // do stuff...
    callback.handleAction(someData);
}

の定義AjaxCompleteHandler

public interface AjaxCompleteHandler{
    public void handleAction(String someData);
}

匿名内部クラス:

fetchData(targetUrl, new AjaxCompleteHandler(){
    public void handleAction(String someData){
        // do something with data
    }
});

または、クラスが を実装MyCoolInterfaceしている場合は、次のように単純に呼び出すことができます。

fetchData(targetUrl, this);
于 2013-11-04T15:30:54.977 に答える