下面的代碼編譯,但如果我取消註釋註釋行,它不,我很困惑爲什麼。 HashMap的確擴展了AbstractMap,並且宣告map的第一行編譯得很好。Java通用問題
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String args[]) {
Map<String, ? extends AbstractMap<String, String>> map = new HashMap<String, HashMap<String, String>>();
//map.put("one", new HashMap<String, String>());
}
}
而且,我知道了 「正確的方式」 是這樣的:
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String args[]) {
Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
map.put("one", new HashMap<String, String>());
}
}
嗨jon。你可以解釋嗎 ?爲什麼不安全?在我看來,橙色的例子應該工作。它應該添加一個橙色的水果名單。 – Jeb 2011-05-12 06:47:35
,最重要的是如果我們想要一個通用的水果清單,解決方案是什麼? – Jeb 2011-05-12 06:48:30
@ user450602:但它不是*實際上*水果清單 - 這是一個列表'。由於類型擦除,Java無法分辨,但這就是它被創建的原因。我將編輯該示例以更多地展示它爲什麼不起作用。 –
2011-05-12 06:48:36