我在抽象类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上了。 –