【发布时间】:2020-04-26 21:17:23
【问题描述】:
考虑这段代码:
private static ArrayList<Level> levels = new ArrayList<>();
static {
try (Stream<Path> paths = Files.walk(Paths.get("levels"))) {
paths
.filter(Files::isRegularFile)
.forEach(levels.add(new Level(file))); //CAN'T DO!!
} catch (IOException e) {
e.printStackTrace();
}
}
我认为代码几乎说明了我正在尝试做的事情。我在某处找到了这段代码,并尝试应用它,从包含 level1.txt、level2.txt 等文件的文件夹创建关卡对象。关卡类将文件作为参数。
forEach 方法给出一个 SyntaxError。
- 过滤方法中的“::”是什么?
- 为什么路径被新行和 2 种方法占用?以前从未见过这样的事情。
- 我怎样才能使它正常工作?
【问题讨论】:
-
"此代码无效。"请提供充分的错误描述,包括错误的完整副本并将其编辑到问题中。
-
1 可以用谷歌搜索 (stackoverflow.com/questions/20001427/…)。 2 只是返回行,与
paths.filter(Files::isRegularFile).forEach(levels.add(new Level(file)));相同,即Stream(此处为链接方法) -
你应该把一个像
(file) -> levels.add(new Level(file))这样的lambda放入forEach而不是一个表达式