我有一段代碼,我認爲應該編譯,但它沒有。下面是代碼:將具體的EnumMap對象列表傳遞給泛型EnumMap參數列表導致編譯錯誤
public class Program {
public void myMethod(List<EnumMap<? extends MyInterface, String>> map)
{
}
public void caller()
{
EnumMap<MyEnum, String> map = new EnumMap<MyEnum, String>(MyEnum.class);
List<EnumMap<MyEnum, String>> list = new LinkedList<EnumMap<MyEnum, String>>();
myMethod(list); //error argument type is not compatible
}
}
MyEnum是實現MyInterface的枚舉。
爲什麼調用myMethod(list)給我的參數類型不兼容?
如果我改變myMethod的的簽名:
public void myMethod(List<? extends Map<? extends MyInterface, String>> map)
然後一切工作正常,但我仍然困惑,並希望知道爲什麼原來 方法簽名不起作用。
謝謝,我明白你在說什麼,但如何將方法簽名更改爲public void myMethod(List <?extends Map <?extends MyInterface,String >> map)使錯誤消失?錯誤不應該留下來嗎? – Alvin 2009-06-28 00:36:31