lambda实际上是匿名类吗?

时间:2019-07-14 16:52:11

标签: java lambda java-8 anonymous-class functional-interface

我正在阅读《有效的Java》,并想知道lambdaanonymous class之间的区别。我知道lambda只能与具有单一方法的接口一起使用,即Functional Interfaces,并且在lambda中您无法获取对自身的引用,因此关键字this与在匿名类关键字{{1}中指定了lambda的类相关}与匿名类的主体有关。但我不知道lambda到底是什么。我想这只是一个创建实现了函数接口的匿名类实例的表达式,因此与普通的匿名类相比,它只是语法糖,但有一些限制,但是由于有了它,我们可以摆脱样板并提高代码的可读性。另一方面,here我们可以了解性能差异,这可能表明lambda实际上不是实现函数接口的匿名类的实例。

1 个答案:

答案 0 :(得分:4)

否,lambdas!=匿名内部类

Java中的Lambda取代了匿名内部类的许多常见用法。结果是更加紧凑,易读且显而易见的代码。

否,基于匿名内部类,lambdas的实现不是

有关更多讨论,请参见Stack Overflow的同级站点上的this Question