This question already has answers here:
Closure in Java 7 [closed]
                                
                                    (7个答案)
                                
                        
                6年前关闭。
            
        

我还没有在Java 7中使用闭包,并且想知道它们如何工作,以及在利用它们时的主要优势或最佳用例是什么?

更新:

我应该做得更好。这是JSR 335的Project Lambda site:Java编程语言的Lambda表达式。他们声称,clousures将在Java 8中使用。我将不得不对其进行更多研究,以查看是否确实如此。

最佳答案

Java 7没有闭包。谣言已经存在很长时间了,并且显然已经设置为出现在Java 8中。当然,也有传言称我会得到Ghostbusters重新引导。

但是,您可以使用anonymous inner classes伪造闭包。但是请不要误会,这些不是闭包。

至于闭包的好处,我不能比这个@jaif中的Stack Overflow图例post更好:

“您可以将其视为类的概括。

您的班级拥有某种状态。它具有一些其方法可以使用的成员变量。

闭包只是使函数访问本地状态的一种更方便的方法。

不必创建一个知道要使用该函数的局部变量的类,您只需在现场定义该函数即可,它可以隐式访问当前可见的每个变量。

当您使用传统的OOP语言定义成员方法时,其关闭是“该类中所有可见的成员”。

具有“适当”闭包支持的语言只是将其概括化,因此函数的闭包是“此处可见的所有变量”。如果“这里”是一个类,则您具有传统的类方法。

如果“ here”在另一个函数内部,则您具有函数程序员认为的闭包。您的函数现在可以访问父函数中可见的任何内容。

因此,这只是一个概括,消除了“函数只能在类内部定义”的愚蠢限制,但保留了“函数可以在声明点看到任何可见变量的想法”。 ”

10-06 05:44
查看更多