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

在Groovy中实现单方法接口的最简单方法?,groovy,closures,Groovy,Closures,在Groovy中实现单方法接口的最简单方法是什么 一个,像还是一个 例如,要列出我编写的java类文件: // works Java-like new File(".").listFiles(new FileFilter() { @Override boolean accept(File file) { !file.isDirectory() } }).each { println it.absolutePath } 但像闭包一样是行不通的 // doe

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

一个,像还是一个

例如,要列出我编写的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 }

是否可以使用闭包或其他方法实现它?

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

return [downloadFolder: downloadFolder.listFiles({ file ->
           return !file.isDirectory()
       })]
基本上,可以使用
映射实现接口

编辑 在此特定示例中,应为:

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

它怎么知道,
{file->!file.isDirectory()}
应该实现即
FileFilter
?它在这里推断类型吗?它将动态运行。如果我有不明确的类型,比如说
FileFilter
FileFilter2
使用相同的代码,你有一个例子吗?在这种情况下,您可以将
用作
关键字。顺便说一句,它不起作用。表示无法区分
FileFilter
FilenameFilter