是否可以从flatMap获取参数?
list.stream().flatMap(a -> a.getBs().stream()).forEach(b->System.out.print(a));
我无法从a
b
答案 0 :(得分:1)
您无法访问之前lambdas
的变量,因为它们超出了范围。 Lambda只是一个匿名类。
你的lambda a -> a.getBs().stream())
可以写成这个
list.stream().flatMap(new Function<YourClass, Stream<?>>() {
@Override
public Stream<?> apply(YourClass foo) {
return foo.getBs().stream();
}
});
来自lamba的a
变量在匿名类中为foo
。它只是一个函数参数,它只在apply
函数中可见。