在Groovy中实现单方法接口的最简单方法是什么?

时间:2015-12-08 08:32:58

标签: groovy closures

在Groovy中实现单方法接口的最简单方法是什么?

RunnableFileFilter

例如,要列出我编写类似java的文件:

// works Java-like
new File(".").listFiles(new FileFilter() {
    @Override
    boolean accept(File file) {
        !file.isDirectory()
    }
}).each { println it.absolutePath }

但是类似闭包不起作用

// does not work
new File(".").listFiles({file -> !file.isDirectory()}).each { println it.absolutePath }

是否可以使用闭包或其他东西来实现它?

1 个答案:

答案 0 :(得分:2)

在这个特定示例中,以下代码应该可以工作:

return [downloadFolder: downloadFolder.listFiles({ file ->
           return !file.isDirectory()
       })]

基本上可以使用Map实现接口。

修改 在这个特定的例子中应该是:

new File(".").listFiles({file -> !file.isDirectory()} as FileFilter).each { println it.absolutePath }