我是 Java 8(Lambda 表达式)的新手。下面的一段代码打印了变量“file”指示的路径中的所有目录。
File file = new File("/vssexclude/Test/workspace/Test");
File[] names = file.listFiles(fileName -> fileName.isDirectory());
for (File name : names) {
System.out.println(name.toString());
}
但是,当我尝试用方法表达式替换 lambda 表达式时,eclipse 出现编译错误:
File[] names = file.listFiles(File::isDirectory());
我错过了什么?
最佳答案
去掉括号:
File[] names = file.listFiles(File::isDirectory);
当你想引用特定类型对象的实例方法时,使用的语法是:
ContainingType::methodName
对此有更详细的描述 here .
关于Java 8 方法表达式给出编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205151/