在Groovy裏閉包是個很有用的工具。例如我們可以把閉包作爲方法的參數,在方法內部執行這個閉包。我們可以用Groovy的語法創建閉包,也可以通過.&運算符直接把Java或Groovy方法直接當作閉包來使用。
我們有一個簡單的類:
public class JavaObject {
public static void javaSays(final String s) {
System.out.println("Java says: Hello " + s + "!");
}
}
在下面的腳本中我們使用這個Java類,並把javaSays方法轉換成閉包:
// 一個簡單的List
def names = ['groovy', 'grails', 'mrhaki']
// 直接使用閉包
names.each { println 'Normal closure says: Hello ' + it + '!' }
// 把Groovy方法轉換爲閉包
def groovySays(s) {
"Groovy says: Hello ${s}!"
}
// 使用.& 語法把方法轉換爲閉包.
names.each(this.&groovySays)
// 把Java方法轉換爲閉包
def javaSays = JavaObject.&javaSays
names.each javaSays