Java中的Lambda是否在执行/运行期间创建匿名类?

问题描述

在Java SE8规范中写为:“ 对lambda表达式的求值将生成功能接口的实例”。

到目前为止,我的理解是- lambda表达式创建了一些实现功能接口的匿名类

有人可以详细解释一下,用我们编写的lamda表达式在运行时会发生什么?

解决方法

不,他们没有。

关于运行时如何表示lambda的 exact 机制故意未指定。

您所知道的是,您将获得一个实现必要接口/行为的有效对象。但除此之外,几乎没有指定。规范甚至没有告诉您两次调用是否会产生相同的对象。

完成这个含糊不清的规范,以便编译器和/或运行时可以在不违反规范的情况下进行优化。

与匿名类的关系是一个历史悠久的关系:如果您想在不使用lambda的情况下执行lambda的操作,那么匿名类是您的下一个最佳工具。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...