锁定老帖子 主题:JAVA 需要引入闭包吗
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-11
最后修改:2009-06-11
visitor 写道 night_stalker 写道 visitor 写道 不过内部类是可以访问上下文的 内部类可以访问外部类的属性。。 嗯,我说的不准确,应该改成“内部类没法访问局部变量”... 举个例子。。。 什么局部变量 譬如: int i = 0; dialog.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(i); // 不行,i 得改成 final } }); 有闭包后就 ok: dialog.onWindowClosing((WindowEvent e){ System.exit(i); }); |
|
返回顶楼 | |
发表时间:2009-06-11
night_stalker 写道 visitor 写道 night_stalker 写道 visitor 写道 不过内部类是可以访问上下文的 内部类可以访问外部类的属性。。 嗯,我说的不准确,应该改成“内部类没法访问局部变量”... 举个例子。。。 什么局部变量 譬如: int i = 0; dialog.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(i); // 不行,i 得改成 final } }); 有闭包后就 ok: dialog.onWindowClosing((WindowEvent e){ System.exit(i); }); I know ,就是 在方法里面定义的变量 但只要定义为final 就可以在 内部类访问啊。。 内部类是可以完全模拟闭包的 |
|
返回顶楼 | |
发表时间:2009-06-11
确实简单了很多
好像是 函数 可以作为 参数传入 |
|
返回顶楼 | |
发表时间:2009-06-11
如果真引入闭包,写代码是少了,恐怕调试会更痛苦一点。
|
|
返回顶楼 | |
发表时间:2009-06-11
night_stalker 写道
visitor 写道
night_stalker 写道
visitor 写道
不过内部类是可以访问上下文的 内部类可以访问外部类的属性。。 嗯,我说的不准确,应该改成“内部类没法访问局部变量”... 举个例子。。。 什么局部变量 譬如: int i = 0; dialog.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(i); // 不行,i 得改成 final } }); 有闭包后就 ok: dialog.onWindowClosing((WindowEvent e){ System.exit(i); });
(WindowEvent e){ System.exit(i); }
而且你举的例子中的 两段代码并非完全等价
|
|
返回顶楼 | |
发表时间:2009-06-11
步行者 写道
night_stalker 写道
visitor 写道
night_stalker 写道
visitor 写道
不过内部类是可以访问上下文的 内部类可以访问外部类的属性。。 嗯,我说的不准确,应该改成“内部类没法访问局部变量”... 举个例子。。。 什么局部变量 譬如: int i = 0; dialog.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(i); // 不行,i 得改成 final } }); 有闭包后就 ok: dialog.onWindowClosing((WindowEvent e){ System.exit(i); });
(WindowEvent e){ System.exit(i); }
而且你举的例子中的 两段代码并非完全等价
你说的是啥规范。 符合你说的那个规范有什么好处 |
|
返回顶楼 | |
发表时间:2009-06-11
bookong 写道 如果真引入闭包,写代码是少了,恐怕调试会更痛苦一点。
不光这些 1,函数做为一级元素,不光要import类了,还要import函数 或者 就像 python一样 要把 文件粒度改为 module了 2,那JAVA中的一切皆对象,就要被打破了 |
|
返回顶楼 | |
发表时间:2009-06-11
icefishc 写道
你说的是啥规范。 符合你说的那个规范有什么好处
就是 面向对象 的 规范 好处就是 很容易从 面向对象分析,设计 过度到 面向对象的编程
|
|
返回顶楼 | |
发表时间:2009-06-11
这个东西的类型就是: void(WindowEvent),会接受编译期检查。参见 closure 的建议:
http://blogs.sun.com/ahe/resource/closures.pdf 另外 OO 规范是什么 …… 麻烦给个链接。 无论怎么看,都是“函数是对象”更 OO 吧。 bookong 写道 如果真引入闭包,写代码是少了,恐怕调试会更痛苦一点。
说说为什么? 能否举个例子。 |
|
返回顶楼 | |
发表时间:2009-06-11
步行者 写道 不光要import类了,还要import函数
?? |
|
返回顶楼 | |