问题描述
在Java SE8规范中写为:“ 对lambda表达式的求值将生成功能接口的实例”。
到目前为止,我的理解是- lambda表达式创建了一些实现功能接口的匿名类
有人可以详细解释一下,用我们编写的lamda表达式在运行时会发生什么?
解决方法
不,他们没有。
关于运行时如何表示lambda的 exact 机制故意未指定。
您所知道的是,您将获得一个实现必要接口/行为的有效对象。但除此之外,几乎没有指定。规范甚至没有告诉您两次调用是否会产生相同的对象。
完成这个含糊不清的规范,以便编译器和/或运行时可以在不违反规范的情况下进行优化。
与匿名类的关系是一个历史悠久的关系:如果您想在不使用lambda的情况下执行lambda的操作,那么匿名类是您的下一个最佳工具。