Java 8 方法表达式给出编译错误

标签 java lambda java-8

我是 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/

相关文章:

c++ - 没有 Y Combinator 的递归 lambda 回调

java - 在带有空格的同一行中使用 Lambda foreach 进行打印

java - TreeView Java FX : hide a node

java - Spring 的秒 :intercept-url easily bypassed?

java - 使用 GWT 的 JSNI 从 java 方法获取返回值

java - 尝试查找数据库表中是否存在某个项目(如果不存在)。添加它

java - 将textview中的数字转换为int

c# - 过滤数组列表内容的最佳方法是什么?

java - 在 Java lambda 中使用两个流来计算协方差

java-8 - 将 list<Object> 转换为 java 8 流中的 <Id> 数组