我收到此代码的编译器错误:
Map<String, String[]> myMap;
void set(Map<String, Object> foo) { }
set(myMap); // generates error
Error: "The method set(Map<String,Object>) in the type XXX is not applicable for the arguments (Map<String,String[]>)"
这对我来说毫无意义,因为 String[] 实际上是一个 Object,并且与 set() 中的参数完全兼容。
在我从 JDK 1.6 升级到 1.7 之前,这个错误没有出现在我的代码中。我在 Eclipse 中没有看到将其关闭的开关。如何让这段代码编译?
编辑:
如果我使用中间变量,它会编译,并删除泛型:
Map anotherMap = myMap;
set(anotherMap);