首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这段代码是用jdk8u45或以上版本编译,而不是用jdk8u25编译呢?

为什么这段代码是用jdk8u45或以上版本编译,而不是用jdk8u25编译呢?
EN

Stack Overflow用户
提问于 2016-05-21 21:10:55
回答 1查看 5.5K关注 0票数 21

拜托,有人能帮我弄清楚为什么下面的代码是用jdk8u45及以上版本编译的,但是jdk8u25却失败了吗?我查看了JDK的发行说明,但没有发现任何与这个问题相关的内容,或者可能错过了它。

密码

代码语言:javascript
复制
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异常:

代码语言:javascript
复制
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>>))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-23 01:23:16

我在类型推断方面也有类似的问题,这个问题发生在8u5到8u25之间,并且在8u40被修复。8u 40中的bug修复列表有一些与嵌套lambda体错误地排除了某些过载解决方法有关的javac修复,这就是我认为您的问题所在。

以下是8u 40中的所有错误修复的列表

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37368060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档