callback 的 java实现
程序员文章站
2022-03-13 10:51:53
...
下面是一个JS的callback实现
var callback = function(){
print(">>> callback()");
};
var func = function(cb){
print(">>> func()");
cb();
};
func(callback);
java中函数不是一级元素(参数和返回值只能是对象,不能为函数),所以不能写出像上面那样简洁地实现callback,
但Java通过OO的方式同样可以模拟一个callback,代码如下
interface CallbackHolder {
void callback();
}
interface CallbackUser {
void func(CallbackHolder callbackHolder);
}
public class TestCallBack {
public static void main(String[] args) {
new CallbackUser() {
public void func(CallbackHolder callbackHolder) {
System.out.println(">>> func()");
callbackHolder.callback();
}
}.func(new CallbackHolder() {
public void callback() {
System.out.println(">>> callback()");
}
});
}
}
运行TestCallBack 类,输出如下(与JS输出一致):
>>> func()
>>> callback()