【发布时间】:2015-06-01 16:53:09
【问题描述】:
我正在通过 java 8 中的 lambda 表达式
当我更改线程代码时,它工作正常
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("run");
}
}).start();
转换为 lambda 表达式为
new Thread(
() -> System.out.println("Hello from thread")
).start();
但我无法转换 FilenameFilter 表达式
File file = new File("/home/text/xyz.txt");
file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
name.endsWith(".txt");
return false;
}
});
并没有成功转换为
file.list(new FilenameFilter () {
(File a1, String a2) -> {
return false;
}
});
它在eclipse中给出错误
此行有多个标记
- 语法错误,插入“;”完成声明
- 语法错误,插入“}”完成块
- 语法错误,插入“AssignmentOperator Expression”完成Assignment
【问题讨论】:
-
如果您使用 Java 8,为什么要使用
File?为什么不是 java.nio.file? -
您应该接受一个答案,以确认问题已解决...
-
感谢@lodo 的回答
-
@fge 我从现在开始使用它
-
由于这在 Google 上出现了很多,这里是 Java 8 中的一个单行:
Files.list(Paths.get("your/path")).filter(path -> path.toString().endsWith(".txt")).collect(Collectors.toList());