我在抽象類Drawn中有這個hashmap,我的意圖是用每個擴展Drawn的類的每個實例來填充它。我初始化地圖像這樣:在java中對一個通用的hashmap進行迭代
public static HashMap<Integer, ? extends Drawn> drawns = new HashMap();
我試圖將元素添加到哈希表所示:
//this code is in the abstract class Drawn()
public void init(){
idCount++;
setID(idCount);
drawns.put(idCount,this);
}
然後我試圖遍歷像這樣:
for(<Integer, ? extends Drawn> E : Drawn.drawns.values()) {
E.draw();
}
兩個迭代器和init()代碼有編譯時錯誤。 但是,如果我將類型參數更改爲Drawn而不是I可以讓所有東西都能編譯,但是當我將子類的實例添加到散列表時,它們不會被迭代器檢測到。
請注意,您在實例的原始類型的HashMap。這將是你未經檢查的轉換警告。你應該把你的RHS改爲'new HashMap <>();',如果已經在Java 7上了。 –