什么是Java等效的JavaScript回调?

时间:2013-11-04 15:14:20

标签: java javascript

我在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中是否有类似的方法?我已经搜索了互联网,但发现在新手级别上没有什么帮助。

1 个答案:

答案 0 :(得分: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);