Java泛型:无法转换<;X>;进入<;?扩展X>;
使用Java 10.0.2+13、Gradle 4.9和Guava 26.0-jre构建以下代码会输出此错误: 错误:Java泛型:无法转换<;X>;进入<;?扩展X>;,java,generics,Java,Generics,使用Java 10.0.2+13、Gradle 4.9和Guava 26.0-jre构建以下代码会输出此错误: 错误: argument mismatch; bad return type in method reference Iterator<Entry<String,ImmutableMap<Path,String>>> cannot be converted to Iterator<Entry<? extends String,? e
argument mismatch; bad return type in method reference
Iterator<Entry<String,ImmutableMap<Path,String>>>
cannot be converted to
Iterator<Entry<? extends String,? extends ImmutableMap<Path,String>>>
参数不匹配;方法引用中的返回类型错误
迭代器
无法转换为
迭代器也许这并不能直接回答您的问题,但使用收集器是否不是一个选项
像这样:
ImmutableMap<String, ImmutableMap<Path, String>> im = m.entrySet().stream()
.collect(ImmutableMap.toImmutableMap(
Map.Entry::getKey, e -> ImmutableMap.copyOf(e.getValue())
));
谢谢。这是可行的,尽管我仍然想知道为什么
不能满足,这是因为嵌套的通配符(流)
ImmutableMap<String, ImmutableMap<Path, String>> im = m.entrySet().stream()
.collect(ImmutableMap.toImmutableMap(
Map.Entry::getKey, e -> ImmutableMap.copyOf(e.getValue())
));
ImmutableMap<String, ImmutableMap<Path, String>> im = ImmutableMap.copyOf(
m.entrySet().stream()
.<Map.Entry<? extends String, ? extends ImmutableMap<Path, String>>>map(e -> immutableEntry(e.getKey(), ImmutableMap.copyOf(e.getValue())))
::iterator
);