在Groovy中实现单方法接口的最简单方法?
在Groovy中实现单方法接口的最简单方法是什么 一个,像还是一个 例如,要列出我编写的java类文件:在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
// 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
。