日期:2014-05-20  浏览次数:20658 次

Java面试问题之五十一
问题:请问Java语言实现闭包了吗?你是如何理解语言中闭包的概念的,请详细谈谈你的看法。

答:Oracle公司在最新推出的JDK 7.0中提供了闭包与Lambda表达式的一个实现方式,虽然还有许多值得考虑的地方,但是从Java语言的发展趋势来看,支持闭包的概念无疑是Java语言的一个方向。所谓闭包是指可以包含自由(未绑定到特定对象)变量的代码块,这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义的。“闭包”这个概念来源于以下两者的结合:要执行的代码块和为自由变量提供绑定的计算环境(作用域)。闭包的价值在于可以作为函数对象或者匿名函数,对于类型系统而言这就意味着不仅要表示数据还要表示代码。支持闭包的多数语言都将函数作为第一级对象,就是说这些函数可以储存到变量中,作为参数传递给其他函数,最重要的是能够被函数动态地创建和返回。