Eclipse无法从java 8流中推断出正确的类型

bal*_*lki 11 java eclipse generics java-8 java-stream

以下代码适用于所有在线java编译器,但eclipse会抛出编译器错误.它是日食中的一个错误还是我错过了一些设置?一个简单的解决方法来沉默eclipse?在线:https://ideone.com/l0bbhz.注意:这是一个简化的简化示例,仅指出问题.flatMap在这种情况下,我理解没有必要.在实际情况下,我真的需要flatMap

package dummy;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import static java.util.stream.Collectors.toList;

public class LearnJava {

    public static void main(String[] args) {
        String[] sa = {"ne", "two", "three"};
        List<String> l = Arrays.stream(sa)
                .flatMap(s -> Collections.singleton(s).stream().map(c -> c.toUpperCase()))
                .collect(toList());
        System.out.println(l.get(0));
    }

}
Run Code Online (Sandbox Code Playgroud)

eclipse控制台出错.

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from List<Object> to List<String>

    at dummy.LearnJava.main(LearnJava.java:13)
Run Code Online (Sandbox Code Playgroud)

我的日食版:

面向Web开发人员的Eclipse Java EE IDE.

版本:Luna Service Release 2(4.4.2)Build id:20150219-0600


更新:我接受了这个小的解决方法.它没有重大的重构工作!

.flatMap(s -> Collections.singleton(s).stream().map(c -> c.toUpperCase()))
Run Code Online (Sandbox Code Playgroud)

.<String>flatMap(s -> Collections.singleton(s).stream().map(c -> c.toUpperCase()))
Run Code Online (Sandbox Code Playgroud)

Gun*_*nar 2

Eclipse 编译器并不完美。有时您会遇到诸如此类的问题。例如,当前有两个与干扰相关flatMap且类型干扰的错误 - 482664502158

如果您认为代码是合法的(当 javac 编译它没有问题时就是这种情况),那么您应该打开一个错误并在那里发布一个片段,以便让他们知道它。这有助于改进编译器。