【发布时间】:2018-06-05 04:08:23
【问题描述】:
以下代码无法编译:
public static Map<String, Collection<String>> convert(Collection<Foo> foos) {
return foos == null ? Maps.newHashMap()
: foos.stream().collect(
Collectors.groupingBy(
f -> f.getSomeEnum().name(),
Collectors.mapping(Foo::getVal, Collectors.toList())));
}
除非我将返回类型更改为List:
public static Map<String, List<String>> convert(Collection<Foo> foos) {
通常我相信我应该可以,但也许泛型会引入一些歧义?
确切的错误:
Incompatible types. Required Map<String, Collection<String>> but 'collect' was inferred to R: no instance(s) of type variable(s) A, A, A, A, A, A, D, K, R, R, T, T, T, U exist so that List<T> conforms to Collection<String>
我认为细节不相关,但以防万一:
Foo是这样的:
public class Foo {
private MyEnumType someEnum;
private String val;
public MyEnumType getSomeEnum();
public String getVal();
}
我正在尝试将Foos 的列表转换为由someEnum 分组的Foos、vals 的映射。
【问题讨论】:
标签: java inheritance polymorphism collectors