closures, inner class and 函数指针
一直不是很理解这三个感念之间的区别。Java是面向对象的编程语言,这点与现在流行的面向函数的动态编程语言不同。Javascript就是后者的一个例子。函数可以独立于对象存在,(或者说它本身就是一种对象)。 ? Java里没有函数指针,但可以向函数中传入一个匿名内部类模拟这种行为。 ? Java目前还未引入closures,但基于JVM的Groovy已经有Closures概念。在Groovy中,所谓Closures就是一段大括号括起来的代码段。这段代码按照Java的习惯一般只能存在于函数中(初始化代码除外)并以函数名的方式调用。在Groovy中,这段代码可以赋给一个变量,通过这个变量来调用这段代码(很多时候放在大括号中直接匿名使用)。 ? 那么代码段与Closures的区别是什么呢?代码段一般是虚拟机碰到这段代码时就执行(方法调用,初始化,回调方法)。Closures只有在它的call()方法被调用时才执行。理解的不是很清楚,详细请参考:http://groovy.codehaus.org/Closures+-+Informal+Guide ? 闭包有几个特点: 1. 可以访问闭包范围外的变量(这点是不是跟Java中内部类相似?) 2. 可以匿名用在任何允许用闭包的地方,比如Groovy的list的collect,each 调用中 ? ? ? 未完。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |