Groovy: 把Map作爲接口的實現來使用
在Groovy中要想實現一個接口,我們可以直接使用map,通過as關鍵字把它傳遞給一個方法。下面是一個簡單的例子,我們通過map定義了一個java.io.FileFilter接口的實現。我們吧它傳遞給java.io.File.listFiles()方法。然後把所有擴展名是.css和.png的文件打印出來。
map = [
// 實現FileFilter.accept(File)方法.
accept: { file -> file.path ==~ /.*\.(css|png)$/ }
] as FileFilter
new File('c:/temp').listFiles(map).each {
println it.path
}
如果接口裏有一個以上的方法要實現,我們可以用上面的map的方式。如果只有一個方法要實現的話(就像上面的例子)我們也可以使用閉包。上面的例子可以寫成這樣(只要.jpg文件):
filter = { it.path ==~ /.*\.jpg$/ }
new File('c:/temp').listFiles(filter as FileFilter).each { file ->
println file.path
}
http://mrhaki.blogspot.com/2009/08/groovy-goodness-use-map-as-interface.html