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