【发布时间】:2019-07-14 16:52:11
【问题描述】:
我正在阅读 Effective Java 并想知道 lambda 和 anonymous class 之间的区别。我知道 lambda 只能与具有单一方法的接口(即功能接口)一起使用,并且在 lambda 中您无法获得对自身的引用,因此关键字 this 与在匿名类关键字 this 中指定 lambda 的类相关时与主体相关一个匿名类。但我不知道 lambda 到底是什么。我猜这只是一个创建实现功能接口的匿名类实例的表达式,所以这只是语法糖,与普通匿名类相比有一些限制,但多亏了它,我们可以摆脱样板文件并使我们的代码更具可读性.另一方面,here 我们可以了解性能差异,这可能表明 lambda 实际上不是实现函数接口的匿名类的实例。
【问题讨论】:
-
正如您的链接所说,lambdas 在字节码级别确实与匿名类不同。说“lambdas 就像匿名类”只是一个类比,让不知道什么 lambdas 符合使用 lambdas 的人。
标签: java lambda java-8 anonymous-class functional-interface