java中关于closure的语法功能一直是被讨论的焦点。关于closure的讨论,前段时间一直比较激烈。在closure和callback之间,觉得界限并不是那么明显。
引用:
1. //先有個 interface,代入 T 回傳 R
2. public interface Converter <R, T> {
3. public R invoke(T arg) ;
4. }
5.
6. //然後是 Collections 上 convert 的工具 method:
7. public static <T,R> List <R> convert(List <T> originals, Converter <R, T> converter) {
8. List <R> converteds = new ArrayList <R> ();
9. for( T t : originals ) {
10. converteds.add(converter.invoke(t));
11. }
12. return converteds;
13. }
# //AIC 寫法
# public List <Integer> convertStringToInteger(List <String> strings) {
# return Collections.convert(strings, new Converter <Integer, String> () {
# public Integer invoke(String orignal) {
# return Integer.parseInt(orginal) ;
# }
# });
# }
--------------------------
原文地址为:http://www.javaworld.com.tw/roller/page/ingramchen?entry=2007_1_1_WhyAddClosureInJava7
在我看来,这个AIC实现的closure(文中所说的),我觉得应该是一个回调函数,因为他在调用过程中并没 有调用 该函数块外面的资源,而是调用了该匿名函数内的方法。所以 更应该说 是一个callback调用。
不知道我的理解是否正确
------解决方案--------------------
我记得closure就是指的是被return的那个内部类实例,因为这个内部类实例可以携带更多的信息,所以叫closure,也就是 "闭包 ".
而callback指的是这种工作方式吧.