考虑这段代码:
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等文件的文件夹创建Level对象。Level类将File作为参数。
forEach方法给出了SyntaxError。
following很好解释
代码可以在多行上运行,但这与以下内容相同。您先调用filter
方法,然后在forEach
filter
paths.filter(Files::isRegularFile).forEach(levels.add(new Level(file)));
开始工作,您需要定义file
变量,这是通过lambda函数完成的]
paths.filter(Files::isRegularFile).forEach(file -> levels.add(new Level(file)));