このコードでコンパイラエラーが発生します:
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 []は実際にはオブジェクトであり、set()のパラメーターと完全に互換性があるため、これは私には意味がありません。
このエラーは、JDK1.6から1.7にアップグレードするまでコードに表示されませんでした。Eclipseにそれをオフにするスイッチが表示されません。このコードをコンパイルするにはどうすればよいですか?
編集:
中間変数を使用するとコンパイルされ、ジェネリックが削除されます。
Map anotherMap = myMap;
set(anotherMap);