如何在Groovy中区分FileFilter和FilenameFilter?

Dim*_*ims 1 groovy lambda

我想列出某些类型的文件并写道:

File[] imageFiles = srcDir.listFiles({ File file ->
            file().name.endsWith("Artboard1ldpi.png") ||
            file().name.endsWith("Artboard1mdpi.png") ||
            file().name.endsWith("Artboard1hdpi.png") ||
            file().name.endsWith("Artboard1xhdpi.png") ||
            file().name.endsWith("Artboard1xxhdpi.png") ||
            file().name.endsWith("Artboard1xxxhdpi.png")
        })
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到以下错误:

> Ambiguous method overloading for method java.io.File#listFiles.
Cannot resolve which method to invoke for [class CLOSURENAME] due to overlapping prototypes between:
    [interface java.io.FileFilter]
    [interface java.io.FilenameFilter]
Run Code Online (Sandbox Code Playgroud)

如何提示Groovy,有什么选择?

Vam*_*ire 5

File[] imageFiles = srcDir.listFiles({ File file ->
    file.name.endsWith("Artboard1ldpi.png") ||
    file.name.endsWith("Artboard1mdpi.png") ||
    file.name.endsWith("Artboard1hdpi.png") ||
    file.name.endsWith("Artboard1xhdpi.png") ||
    file.name.endsWith("Artboard1xxhdpi.png") ||
    file.name.endsWith("Artboard1xxxhdpi.png")
} as FileFilter)
Run Code Online (Sandbox Code Playgroud)


Opa*_*pal 5

这也应该有效,干;)

File[] imageFiles = srcDir.listFiles({ File file ->
   [
      "Artboard1ldpi.png",
      "Artboard1ldpi.png",
      "Artboard1mdpi.png",
      "Artboard1hdpi.png",
      "Artboard1xhdpi.png",
      "Artboard1xxhdpi.png",
      "Artboard1xxxhdpi.png",
   ].any { file.name.endsWith(it) }
} as FileFilter)
Run Code Online (Sandbox Code Playgroud)