OpenJDK类型推断编译错误

时间:2016-04-26 20:08:31

标签: java javac openjdk

我有这段代码无法在OpenJDK Linux上编译,但在Windows上没有编译Oracle JDK,1.7(Linux - 特别是javac 1.7.0_79):

OS是一个枚举,Path也是一个枚举。

public static Map<OS, Map<Path, String>> paths = new HashMap<>();

...

paths.put(OS.WINDOWS, new HashMap<>()); // FAIL ON OPEN JDK!!!!

我收到了这个错误:

required: OS,Map<Path,String>
   found: OS,HashMap<Object,Object>
   reason: actual argument HashMap<Object,Object> cannot be converted to Map<Path,String> by method invocation conversion

如果我不依赖于类型推断并直接输入泛型,那就可以了。

public static Map<OS, Map<Path, String>> paths = new HashMap<OS, Map<Path, String>>();

...

paths.put(OS.WINDOWS, new HashMap<Path, String>()); // NOT FAIL ON OPENJDK

这是一个错误,还是OpenJDK的旧版本?

修改: 问题解决了! 在Windows上,我使用Java 8进行目标类型推断。谢谢shmosel。

0 个答案:

没有答案