看了一些文章,闭包的概念如下:
有一个函数中,能访问函数外的变量,并且函数外的变量值改变后,会影响函数内的计算(或逻辑)。
下面是一个python的例子。(http://my.oschina.net/flashsword/blog/161413?fromerr=hEO2aqMR)
#!/usr/bin/python
y =1
f=lambda x: x + y
printf(2)
y =3
printf(2)
输出:
3
5
在外部变量y的值被改变后,函数f计算出来的值变化了。
在Java中,也有类似闭包的东西,比如匿名类,或内部类。
但在匿名类或内部类中可以引用外部的变量,但无法改变它的值。
因为在匿名类或内部类中被引用的外变量,都必须是final类型的。
所以,Java中的匿名类或内部类在严格意义上说,还不完全是闭包。