Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java 8中的嵌套flatMap调用需要类型见证_Java_Java 8_Type Inference - Fatal编程技术网

为什么Java 8中的嵌套flatMap调用需要类型见证

为什么Java 8中的嵌套flatMap调用需要类型见证,java,java-8,type-inference,Java,Java 8,Type Inference,嵌套的flatMap调用并不少见。考虑这个设计的例子。 Collection<String> solutions = Stream.of("a","b").<String>flatMap( x -> Stream.of(1, 2).flatMap( y -> Stream.of(x+y, y+x) ) ) .collect(Coll

嵌套的flatMap调用并不少见。考虑这个设计的例子。
Collection<String> solutions = 
        Stream.of("a","b").<String>flatMap( x ->
            Stream.of(1, 2).flatMap( y ->
                Stream.of(x+y, y+x)
            )
        )
        .collect(Collectors.toList());
收集解决方案=
“a”、“b”流平面图(x->
(1,2)流平面图(y->
(x+y,y+x)流
)
)
.collect(Collectors.toList());

在Java8Update25中,如果没有令人遗憾的类型见证,这将无法编译。为什么我们映射到字符串流的约束不能从嵌套的flatMap调用中“渗透”出来呢?

这似乎是Eclipse编译器的问题。我已经提交了使用jdk 8u40编译良好的文件-您可能正在使用eclipse的编译器吗?使用
8u05
8u20
8u40
编译良好;问题确实出在Eclipse的编译器上。(Eclipse有自己的Java编译器,独立于JDK编译器)。请尝试在命令行中使用JDK编译器而不是在Eclipse中编译它。@assylias感谢您指出这一点。是的,我正在使用Eclipse编译器,我总是忘记它的行为与javac不同。当阅读bug报告时,Eclipse4.5M5中的代码确实可以与javac.Worksforme很好地配合,这一点毫不奇怪。小车行为如4.4.2所示。从4.5M3开始,ecj接受该程序。更具体地说:自从错误437444得到解决(包括采用了一些规范更改)。