【发布时间】:2020-05-27 10:01:40
【问题描述】:
以下代码不能用我的JDK14编译:
Map<Integer, String> map = Arrays.asList("this", "is", "just", "an", "example").stream()
.collect(Collectors.toMap(w -> w.length(),
w -> w,
(existing, replacement) -> replacement,
() -> new TreeMap<>(Comparator.reverseOrder())));
如果我为 TreeMap 的构造函数指定类型,它可以正常工作:
Map<Integer, String> map4 = Arrays.asList("this", "is", "just", "an", "example").stream()
.collect(Collectors.toMap(w -> w.length(),
w -> w,
(existing, replacement) -> replacement,
() -> new TreeMap<Integer, String>(Comparator.reverseOrder())));
是我遗漏了什么还是 JDK14 的类型擦除系统中存在错误?
【问题讨论】:
-
编译器的错误信息是否类似于“无法派生类型”?
-
是的,“无法推断类型变量”。
标签: java types java-stream collectors java-14