由于遗留原因,我必须使用Java 7和Guava重新实现一些Java 8代码。原始代码如下所示:
Function<List<String>, Iterable<String>> f = new Function<List<String>, Iterable<String>>() {
public Iterable<String> apply(List<String> list) { return list; }
}
FluentIterable.from(someMethodReturningSetofListofStrings()).transformAndConcat(f);
使用番石榴,我将参加FluentIterable课程,这是我的尝试:
f
我认为定义函数transformAndConcat(List<String>, Iterable<?>) cannot be applied to Function<Object, Object>
是不必要的,因为它是身份函数,我可以使用Functions#identity()。
但我的IDE(Intellij IDEA 14)抱怨List
。我不明白为什么,因为Iterable
显然是this.get(status)
。
答案 0 :(得分:2)
这是类型推断失败,在这种情况下,您始终可以显式提供类型
transformAndConcat(Function.<List<String>>identity());
在java8中,改进了类型推断,并在java8中编译以下代码
transformAndConcat(Function.identity());
答案 1 :(得分:0)
使用Iterables.concat
:
Iterables.concat(someMethodReturningSetofListofStrings())