Java 8 Method表达式给出了编译错误

时间:2014-01-18 14:03:39

标签: java lambda java-8

我是Java 8(Lambda Expression)的新手。下面的代码打印变量“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());

我错过了什么?

1 个答案:

答案 0 :(得分:6)

删除括号:

File[] names = file.listFiles(File::isDirectory);

如果要引用特定类型对象的实例方法,则使用的语法为:

ContainingType::methodName

更详细地描述了here