lambda 实际上是匿名的 class 吗?

Is lambda in fact an anonymous class?

我正在阅读 Effective Java 并想知道 lambdaanonymous class 之间的区别。我知道 lambda 只能与具有单一方法的接口一起使用,即功能接口,并且在 lambda 中你无法获得对自身的引用,因此关键字 this 与 class 相关,其中在匿名 [= 中指定了 lambda 19=] 关键字 this 与匿名 class 的正文相关。但我不知道 lambda 到底是什么。我想这只是一个创建匿名 class 实例的表达式,它实现了函数式接口,所以这只是语法糖,与普通匿名 class 相比有一些限制,但多亏了它,我们可以摆脱样板并使我们的代码更具可读性。另一方面,here 我们可以了解性能差异,这表明 lambda 实际上不是实现函数接口的匿名实例 class。

不,lambdas != 匿名内部 类

Java 中的 Lambda 替换了匿名内部 类 的许多常见用法。结果是更加紧凑、可读和明显的代码。

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

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