【发布时间】:2014-06-20 12:31:01
【问题描述】:
假设我有一个List<String> 和一个List<Transfomer>。我想将每个转换器应用于列表中的每个字符串。
使用 Java 8 lambda,我可以做到这一点:
strings.stream().map(s -> {
for(Transformer t : transformers) {
s = t.apply(s);
}
return s;
}).forEach(System.out::println);
但我想做更多类似的事情,但是它会导致编译时错误:
strings.stream().map(s -> transformers.stream().forEach(t -> s = t.apply(s))).forEach(System.out::println);
我刚开始使用 lambda,所以也许我的语法不正确。
【问题讨论】:
-
包含编译器错误的文本可能会有所帮助。
-
错误:(49, 60) java: 从 lambda 表达式引用的局部变量必须是最终的或有效的最终
-
这个问题很好;但是,我建议将其移至 Stack Overflow。
-
有什么办法可以移动它吗?还是需要比我更多的权限?