对HashMap执行put操作时出错<integer,?>

时间:2017-05-07 16:31:36

标签: java object generics inheritance wrapper

我有以下课程:

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)参数,但是同样的错误。

我做错了什么?谢谢。

0 个答案:

没有答案