Groovy: 把Map作爲接口的實現來使用

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章