锁定老帖子 主题:JAVA 需要引入闭包吗
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-11
function getX(){
var x; callAMethod(function(){ x = 5*10; }); return x; } 这就是闭包吗 怎么和java的匿名内部类是的呀?? |
|
返回顶楼 | |
发表时间:2009-06-11
herryhcm 写道 要闭包!!!
为什么一定要闭包? 闭包 有什么优势(相对于对象)? 我觉得java 引入闭包 得不偿失。 |
|
返回顶楼 | |
发表时间:2009-06-11
night_stalker 写道 ![]() ↓ ![]() ↓ ![]() ![]() 。。。 能给个解释不。。。 |
|
返回顶楼 | |
发表时间:2009-06-11
闭包
一可以消灭魔法词汇: "addListener" "new xxxListener" "Runnable" "run" 二可以更好的进行抽象。图中这几种情况用对象不是不可以,但是很冗长。代码越长,维护就越痛苦。没闭包的时候很多算法抽象如 filter、fold、map 都很难运用。 闭包降低了复杂性而不是增加了复杂性,没闭包你得用模式、AOP 等更复杂的手段去解决一些问题。 三是内部类不能访问上下文,根本没法和闭包比,写点复杂的东西就知道了。 坏处也不少:培训班老师得学习一下了。 闭包语义上当然是和对象等价,但是这个就是纯纯粹粹的语法问题。能做和能容易的做是不同的。 |
|
返回顶楼 | |
发表时间:2009-06-11
现在我有个在区域的过滤器,如果java支持closure,那可是相当的简洁,可惜现在写了一堆callback在那里。
|
|
返回顶楼 | |
发表时间:2009-06-11
night_stalker 写道 闭包
一可以消灭魔法词汇: "addListener" "new xxxListener" "Runnable" "run" 二可以更好的进行抽象。图中这几种情况用对象不是不可以,但是很冗长。代码越长,维护就越痛苦。没闭包的时候很多算法抽象如 filter、fold、map 都很难运用。 闭包降低了复杂性而不是增加了复杂性,没闭包你得用模式、AOP 等更复杂的手段去解决一些问题。 三是内部类不能访问上下文,根本没法和闭包比,写点复杂的东西就知道了。 坏处也不少:培训班老师得学习一下了。 闭包语义上当然是和对象等价,但是这个就是纯纯粹粹的语法问题。能做和能容易的做是不同的。 谢谢给出的 解释!!! 不过内部类是可以访问上下文的 内部类可以访问外部类的属性。。 |
|
返回顶楼 | |
发表时间:2009-06-11
visitor 写道 不过内部类是可以访问上下文的 内部类可以访问外部类的属性。。 嗯,我说的不准确,应该改成“内部类没法访问局部变量”... |
|
返回顶楼 | |
发表时间:2009-06-11
night_stalker 写道 visitor 写道 不过内部类是可以访问上下文的 内部类可以访问外部类的属性。。 嗯,我说的不准确,应该改成“内部类没法访问局部变量”... 举个例子。。。 什么局部变量 |
|
返回顶楼 | |
发表时间:2009-06-11
mathgl 写道 现在我有个在区域的过滤器,如果java支持closure,那可是相当的简洁,可惜现在写了一堆callback在那里。
能用代码说明一下吗 伪代码 也可以 我也想看看 闭包的 威力在哪。 |
|
返回顶楼 | |
发表时间:2009-06-11
visitor 写道 night_stalker 写道 visitor 写道 不过内部类是可以访问上下文的 内部类可以访问外部类的属性。。 嗯,我说的不准确,应该改成“内部类没法访问局部变量”... 举个例子。。。 什么局部变量 局部变量必需是final的才可以被闭包访问,参见TIJ中的内部类一章 |
|
返回顶楼 | |