首页 > 解决方案 > 将 java 7 迁移到 java 8 - 集合中的 forEach 和 addAll?

问题描述

我的java7代码:

String[] packagesName = ...
final Set<Class<?>> result = new HashSet<>();
for (final String packageName : packagesName) {
    result.addAll(new Reflections(packageName, new SubTypesScanner(false)).getSubTypesOf(Step.class));
}
return result;

我尝试使用stream+ flatMap+ map+collect

packagesName.stream().flatMap(packageName -> new Reflections(packageName, new SubTypesScanner(false)).getSubTypesOf(Step.class)).collect(...??

标签: javaarraysjava-8

解决方案


flatMap需要一个返回流作为参数的函数

return packagesName.stream()
    .flatMap(packageName -> new Reflections(packageName,
            new SubTypesScanner(false)).getSubTypesOf(Step.class).stream())
    .collect(Collectors.toSet());

推荐阅读