返回信息流有没有大神愿意给出这两个概念的清晰的定义~
这是一条镜像帖。来源:北邮人论坛 / java / #54646同步于 2017/1/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于两个概念(闭包和回调)的问题
liuyehcf
2017/1/7镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
回掉函数为啥没有呢?。。
一个同步的方法,最后调用一个函数,那么最后这个就是回调么……
【 在 nuanyangyang 的大作中提到: 】
: 闭包 = 函数+捕获的变量
: 回调: 自己定义,别人调用的函数。
:
: p.s. 为什么在这个版发?Java既没有闭包,也没有回调函数。
:
java不是异步的,你说的回调只是调用,没有体现“回”
【 在 ml3615556 (Andy) 的大作中提到: 】
: 回掉函数为啥没有呢?。。
: 一个同步的方法,最后调用一个函数,那么最后这个就是回调么……
【 在 ml3615556 的大作中提到: 】
: 回掉函数为啥没有呢?。。
因为java里函数不是first class object。不能把一个函数本身作为参数传给另一个函数。所以,java程序猿一般用面向对象的方法,不是提供回调函数,而是提供一个实现了某个接口的对象。回调就是调用这个对象的方法。
: 一个同步的方法,最后调用一个函数,那么最后这个就是回调么……
这叫尾调用(tail call)。是不是回调,取决于谁提供了这个函数。
: :
接收一个 lambda 实际上还是接收一个对象是吧?
但是看上去就像传函数了
【 在 nuanyangyang 的大作中提到: 】
:
: 因为java里函数不是first class object。不能把一个函数本身作为参数传给另一个函数。所以,java程序猿一般用面向对象的方法,不是提供回调函数,而是提供一个实现了某个接口的对象。回调就是调用这个对象的方法。
:
: ...................
【 在 qiukun 的大作中提到: 】
: 接收一个 lambda 实际上还是接收一个对象是吧?
是的。java里lambda的语义是创建一个“继承一个只有一个虚方法的类型(SAM type),并创建实例”。
: 但是看上去就像传函数了
嗯。要的就是这个效果。让程序看上去像函数式的程序。