这个内部 class 的正确 lambda 是什么

what is the right lambda for this inner class

我有以下代码:

  private List<String> searchFolder(File tempDirFile) {
            List<String> listFile;
            listFile = Arrays.asList(tempDirFile.list(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    return name.contains(type);
                }
            }));
            return listFile;
        }

SonarLint 告诉我“让这个匿名内部 class 成为 lambda”。所以这个

new FilenameFilter(){.....}

应该“转换”为 lambda。我查找了案例和场景,但无法为我这里的这个特定案例找到解决方案。

根据 OP 的要求:FilenameFilter 是一个 FunctionalInterface 它只有一个抽象方法,它可以用与其签名匹配的 lambda 来实现,java 编译器将推断类型:

Arrays.asList(tempDirFile.list((dir, name) -> name.contains(type)));

编辑:@FunctionalInterface 注释是可选的,即使没有用它注释,您也可以只使用一个抽象方法为任何接口创建 lambda。

编辑 2:关于 lambda 表达式的更多信息 https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html