Ale*_*lls 11 groovy closures anonymous-inner-class

如果仔细查看所包含的图片,您会注意到您可以使用Eclipse IDE重构Groovy代码并将方法转换为闭包,反之亦然.那么,究竟什么是闭包呢?它与方法有何不同?有人能给出一个使用闭包的好例子,以及为什么它是一个有用的功能?匿名内部课程不够好?
Sea*_*ull 12
Closure是一个Closure类实例,它实现了Call逻辑.它可以作为参数传递或分配给变量.它还有一些逻辑涉及范围变量访问和委托调用.
方法是普通的Java方法.没什么特别的.
是的,匿名内部类有很多样板代码来执行简单的操作.
相比:
button.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e ) {
frame.dispose();
}
}
);
Run Code Online (Sandbox Code Playgroud)
VS
button.addActionListener { frame.dispose() }
Run Code Online (Sandbox Code Playgroud)
有关SO Groovy的一个相关问题:闭包或方法 以及包含大量有用信息的用户指南的以下链接.
Groovy中的闭包是一个开放的,匿名的代码块,可以接受参数,返回值并分配给变量.闭包可以引用在其周围范围内声明的变量.与闭包的正式定义相反,Groovy语言中的Closure也可以包含在其周围范围之外定义的自由变量.在打破闭包的正式概念的同时,它提供了本章所述的各种优点.