gpt4 book ai didi

java - 为什么这段代码可以用 jdk8u45 及更高版本编译,但不能用 jdk8u25 编译?

转载 作者:IT老高 更新时间:2023-10-28 21:02:05 25 4
gpt4 key购买 nike

请,有人可以帮我弄清楚为什么以下代码可以使用 jdk8u45 及更高版本编译,但无法使用 jdk8u25?我查看了 JDK 发行说明,但没有找到与该问题相关的任何内容,或者可能错过了它。

代码

public class Main {

static class Param {
final int id;

Param(int id) {
this.id = id;
}
}

static class Subtask {
final Param param;

Subtask(Param param) {
this.param = param;
}
}

public static void main(String[] args) {
List<? extends Param> params = IntStream.range(1, 100).mapToObj(Param::new).collect(Collectors.toList());
NavigableMap<String, Subtask> map = params.stream()
.collect(Collectors.toMap(p -> UUID.randomUUID().toString(), Subtask::new, (a, b) -> a, TreeMap::new));
}
}

jdk8u25 异常:

Error:(33, 17) java: no suitable method found for collect(java.util.stream.Collector<org.ka.Main.Param,capture#1 of ?,java.util.TreeMap<java.lang.String,org.ka.Main.Subtask>>)
method java.util.stream.Stream.<R>collect(java.util.function.Supplier<R>,java.util.function.BiConsumer<R,? super capture#2 of ? extends org.ka.Main.Param>,java.util.function.BiConsumer<R,R>) is not applicable
(cannot infer type-variable(s) R
(actual and formal argument lists differ in length))
method java.util.stream.Stream.<R,A>collect(java.util.stream.Collector<? super capture#2 of ? extends org.ka.Main.Param,A,R>) is not applicable
(cannot infer type-variable(s) R,A,capture#3 of ?,T,K,U,M,K,V
(argument mismatch; java.util.stream.Collector<capture#2 of ? extends org.ka.Main.Param,capture#4 of ?,java.util.TreeMap<java.lang.Object,org.ka.Main.Subtask>> cannot be converted to java.util.stream.Collector<? super capture#2 of ? extends org.ka.Main.Param,capture#4 of ?,java.util.TreeMap<java.lang.Object,org.ka.Main.Subtask>>))

最佳答案

我在类型推断方面遇到了类似的问题,它在 8u5 和 8u25 之间的某个地方中断,并在 8u40 中得到修复。 8u40 中的错误修复列表有一些与 nested lambda bodies incorrectly ruling out some methods in overload resolution 相关的 javac 修复。这就是我认为你的问题所在。

这里是 all bug fixes in 8u40 的列表

关于java - 为什么这段代码可以用 jdk8u45 及更高版本编译,但不能用 jdk8u25 编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37368060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com