现在越来越多的动态语言比如:Python,Ruby等受到了大家的欢迎,Java中也衍生出了Groovey,在这些语言中都提供了“闭包”的支持。在Java未来将发布的最新版本Dolphin也将增加“闭包”的功能(closure)。
类似Groovy、Python、Ruby这样的语言中都存在闭包的概念,Java、C++、C#这样的语言都不支持闭包,什么是闭包呢?记得以前看到的一篇文章中这样说过“对象是附带过程的数据,闭包是附带数据的过程”。听起来有点抽象,简单一点讲闭包就是“一段封闭的代码”(block),下面是Java7规范草案中有关闭包的一段代码:
[code]int(int) plus2b = (int x) {return x+2; };[/code]
闭包可以包含参数和返回结果,这比起Java中的匿名内部类要要简单灵活的多。个人认为Java中增加闭包函数除了增加灵活性;而且更易于对代码进行抽象;同时可以减少临时对象对内存的开销,虽然Java有自动垃圾回收机制,但是有时候在一些应用程序中临时对象的存在可能就是性能的瓶颈。目前Java7中的闭包部分的规范还在起草阶段,期望未来的Java中可以增加更多的动态语言的支持。