关闭和回调

Nee*_*raj 8 java closures

除了内部类之外,java中还有其他任何方法可以实现回调吗?回调和闭包有什么区别?

Thi*_*ilo 10

关闭是你如何构建它,回调就是你如何使用它.

回调可以实现为闭包(在具有它们的语言中)或接口的实现(在Java中,作为匿名内部类或常规类).

回调意味着您将一段代码传递给函数,以便函数可以稍后调用该段代码.这是一种特殊的参数.

这段代码可以是函数指针或闭包或具有众所周知方法的对象,具体取决于语言提供的内容.


Esk*_*ola 5

闭包和匿名内部类(以及其他类)都可以用作回调.一个回调只是一些代码作为参数传递给其他代码中传递.

与Java的匿名内部类相比,闭包的一个重要区别是(在命令式语言中)闭包可以修改周围范围的变量.维基百科给出了以下示例:

var f, g;
function foo() {
  var x = 0;
  f = function() { return ++x; };
  g = function() { return --x; };
  x = 1;
  alert('inside foo, call to f(): ' + f()); // "2"
}
foo();
alert('call to g(): ' + g()); // "1"
alert('call to f(): ' + f()); // "2"
Run Code Online (Sandbox Code Playgroud)