Java 7 中的闭包 [已关闭]

2022-08-31 09:56:11

什么是闭包?它应该包含在Java 7中。(讨论过将闭包包含在Java 7中,但最终没有包括在内。任何人都可以为我提供一些可靠的参考资料,从中我可以学习有关闭包的知识?


答案 1

闭包是一个代码块,可以通过访问封闭作用域的变量来引用(和传递)。

从Java 1.1开始,匿名内部类以非常详细的方式提供了这个工具。它们还有一个限制,即只能使用(并且明确分配)局部变量。(请注意,即使是非局部变量也在作用域内,但不能使用。finalfinal

Java SE 8 旨在为单方法接口*提供更简洁的版本,称为“lambdas”。Lambdas 具有与匿名内部类大致相同的限制,尽管某些细节会随机变化。

Lambdas正在Lambda项目JSR 335下开发。

*最初设计更灵活,允许单抽象方法(SAM)类型。不幸的是,新设计不太灵活,但确实试图证明允许在接口内实现是合理的。


答案 2

这是Neal Gafter的博客,它是在Java中引入闭包的先驱之一。他从2007年1月28日开始发表的关于关闭的帖子被命名为“关闭的定义”在他的博客上,有很多信息可以让你入门,还有视频。这里有一个很好的Google演讲 - 编程语言中的高级主题 - 与Neal Gafter一起关闭Java。