首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将DirectoryStream转换为lambda表达式

将DirectoryStream转换为lambda表达式
EN

Stack Overflow用户
提问于 2015-11-06 12:48:46
回答 1查看 1.5K关注 0票数 2

这段代码能转化为lambda表达式吗?我试了很多次,但我没明白。

代码语言:javascript
复制
DirectoryStream.Filter<Path> dirFilter = new DirectoryStream.Filter<Path>() {
    @Override
    public boolean accept(Path dir) throws IOException {
        return Files.isDirectory(dir);
    }
};
Path baseDirectory = getProjectDir();
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(baseDirectory, dirFilter)) {
    for(Path path : dirStream) {
        System.out.println(path.getFileName());
    }
} catch(IOException ioe) {
    ioe.printStackTrace();
}
EN

回答 1

Stack Overflow用户

发布于 2015-11-06 13:01:52

这可以简单地写成:

代码语言:javascript
复制
DirectoryStream.Filter<Path> dirFilter = Files::isDirectory;
Path baseDirectory = getProjectDir();
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(baseDirectory, dirFilter)) {
    dirStream.forEach(p -> System.out.println(p.getFileName()));
}

首先,将为DirectoryStream.Filter创建匿名类替换为方法参考 Files::isDirectory。这样做是因为:

然后,其余代码使用添加到Iterable (IterableDirectoryStream )的新方法DirectoryStream。该方法接受一个参数,即Consumer,该参数可以表示为一个lambda表达式,该表达式接受Path类型的单个参数,但不返回任何结果(此参数的参数与上面相同)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33567188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档