我收到类型不匹配错误,直到我将代码重构为:
public final Stream<Map.Entry<E, Integer>> orderedStreamOfEntries() {
return this.m_map.entrySet()
.stream()
.sorted(Comparator.comparingInt(Entry::getValue))
.map(AbstractMap.SimpleImmutableEntry::new);
}
- 返回类型是
Stream<Entry<E, Integer>>
- 该例程结束时的流类型是
Stream<SimpleImmutableEntry<E, Integer>>
正式类型参数E
有这样的定义:
<E extends Enum<E> & MyCustomInterface>
我不明白为什么编译器似乎可以接受。因为 Java 泛型是不变的,即使java.util.AbstractMap.SimpleImmutableEntry
implements java.util.Map.Entry
,我也会说它Stream<SimpleImmutableEntry<>>
不是返回类型的子类型,Stream<Entry<>>
.