Java 中的闭包我感觉就是把函数作为参数进行引用,也就是在 JDK 7 如果能加入闭包的话, 那么,一个函数就能作为方法的参数。下面这个是用闭包原型编译器编译、运行的代码:import java.util.ArrayList; import java.util.List;public class Test { public static void main(String[] args) { List<{ int, int => int }> list = new ArrayList<{ int, int => int }>(); list.add({ int x, int y => x + y }); list.add({ int x, int y => x - y }); list.add({ int x, int y => x * y }); list.add({ int x, int y => x / y }); for(int i = 0; i < list.size(); i++) { test(list.get(i)).invoke("list[" + i + "] ="); } } private static { String => void } test({ int, int => int} func) { return { String s => System.out.println(s.trim() + " " + func.invoke(6, 3)); }; } }输出结果:list[0] = 9 list[1] = 3 list[2] = 18 list[3] = 2实现的逻辑很简单,就是输出 6 和 3 进行四则运算的结果。注意一下 test 方法的参数,这是一个闭包函数,作为 test 方法的参数。 在当前的闭包原型编译器的语义下,名为 func 的闭包函数中,前面两个 int 是这个闭包函数的参数,=> 后面的是这个闭包函数的返回值。同理,test 方法的返回值也是一个闭包函数。闭包函数采用 invoke 进行调用,invoke 方法的参数是一个变参,具体的 参数个数依照闭包函数的参数个数。
回调:被调用方在接口被调用时也会调用对方的接口
希望有帮助
关于闭包希望这个对你有用:http://www.ibm.com/developerworks/cn/java/j-jtp04247.html
闭包: 函数中包含另外一段过程
现在Ruby Python 里面都有闭包..名曰. closuer. Java 7中很有可能会加入. 所以先研究下..回调再Java中如何实现? 还是callback仅仅是Windows程序的专利? 就如同 handle.
那么,一个函数就能作为方法的参数。下面这个是用闭包原型编译器编译、运行的代码:import java.util.ArrayList;
import java.util.List;public class Test { public static void main(String[] args) { List<{ int, int => int }> list = new ArrayList<{ int, int => int }>(); list.add({ int x, int y => x + y });
list.add({ int x, int y => x - y });
list.add({ int x, int y => x * y });
list.add({ int x, int y => x / y }); for(int i = 0; i < list.size(); i++) {
test(list.get(i)).invoke("list[" + i + "] =");
}
} private static { String => void } test({ int, int => int} func) {
return { String s => System.out.println(s.trim() + " " + func.invoke(6, 3)); };
}
}输出结果:list[0] = 9
list[1] = 3
list[2] = 18
list[3] = 2实现的逻辑很简单,就是输出 6 和 3 进行四则运算的结果。注意一下 test 方法的参数,这是一个闭包函数,作为 test 方法的参数。
在当前的闭包原型编译器的语义下,名为 func 的闭包函数中,前面两个
int 是这个闭包函数的参数,=> 后面的是这个闭包函数的返回值。同理,test 方法的返回值也是一个闭包函数。闭包函数采用 invoke 进行调用,invoke 方法的参数是一个变参,具体的
参数个数依照闭包函数的参数个数。
回调的意思就是在接口定义好逻辑之后,不是你来调用,而是外部程序来帮你调用,
你看Spring的JdbcTemplate,HibernateTemplate,到处体现了接口与回调的思想