是否可以从flatMap获取参数?

时间:2018-01-05 13:18:03

标签: java java-stream

是否可以从flatMap获取参数?

list.stream().flatMap(a -> a.getBs().stream()).forEach(b->System.out.print(a));

我无法从a

访问b

1 个答案:

答案 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函数中可见。

相关问题