我有以下课程:
abstract class A
{
protected HashMap<Integer, ?> genericMap;
public HashMap<Integer,?> getMap(){
return this.genericMap;
}
}
class B extends A
{
public B() {
this.genericMap = new HashMap<Integer,Rock>();
}
public Rock getRock(Integer key){
return (Rock) this.genericMap.get(key);
}
public void addRock(Integer key, Rock value){
this.genericMap.put(key, value);
}
}
基本上所有扩展A的类(如B,C,D等)都将在构造函数中实例化一个具有相同键类型但值的类型不同的HashMap。
当我在子类中获取hashmap值时,我只需要进行强制转换。
但是当我在子类中尝试将某些东西放入hashmap时,我得到以下错误:
The method put(Integer, capture#3-of ?) in the type HashMap<Integer, capture#3-of ?> is not applicable for the arguments (Integer, Rock).
我也尝试了(Integer, Object)
参数,但是同样的错误。
我做错了什么?谢谢。