加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

closures, inner class and 函数指针

发布时间:2020-12-14 16:54:08 所属栏目:大数据 来源:网络整理
导读:一直不是很理解这三个感念之间的区别。Java是面向对象的编程语言,这点与现在流行的面向函数的动态编程语言不同。Javascript就是后者的一个例子。函数可以独立于对象存在,(或者说它本身就是一种对象)。 ? Java里没有函数指针,但可以向函数中传入一个匿名

一直不是很理解这三个感念之间的区别。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 调用中

?

?

?

未完。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读