Java 8:通用类型推断改进

时间:2013-12-14 15:06:20

标签: java generics type-inference java-8

使用JEP 101: Generalized Target-Type Inference

final List<Boolean> bools = Arrays.asList(true,false, true);
final List<Character> string = bools.stream()
        .<Character>map(x -> x ? 'X' : 'O')
        .collect(Collectors.<Character>toList());

应该可以减少到

    final List<Boolean> bools = Arrays.asList(true, false, true);
    final List<Character> string = bools.stream()
            .map(x -> x ? 'X' : 'O')
            .collect(Collectors.toList());

在Java 8中,但后者不编译:

  

Type mismatch: cannot convert from List<Object> to List<Character>

我弄错了吗? 还是我领先于我的工具?

我正在使用JDK 8 build b120eclipse-SDK-4.3.1-win32-x86_64-efx-0.9.0-SNAPSHOT.zip

3 个答案:

答案 0 :(得分:2)

它在IntelliJ Idea 13下工作正常,它似乎领先于Java支持Java8。 所以我想你只需要等到Eclipse才能编译它。

答案 1 :(得分:2)

现在修复了这个问题,最新的JDT快照实现了所需的提案。

答案 2 :(得分:0)

自Java 8发布以来,每个Eclipse版本都接受该示例。

(释放大于或等于P20140317-1600)。