Java - HashMap <integer,?=“”extends =“”mysuperclass =“”>(); </integer,>

时间:2015-01-19 17:23:08

标签: java hashmap

如何制作HashMap,将Integerint映射到扩展指定类的类的类实例:

public HashMap<Integer, ? extends myClass> myMap = new HashMap<Integer, ? extends myClass>();

这会产生错误:Cannot instantiate the type HashMap<Integer,? extends mySuperclass>(由Eclipse提供)

我对Java不太熟悉,我非常感谢您的回答。为了使这一点更加明显,这是一个简短的图像,解释了我想要实现的目标: Click this link to see the image.

尝试添加一个不扩展超类的类应该不起作用。

我真的很抱歉,如果已经提出这个问题,但我尝试搜索了几个术语,却找不到类似的问题。有one非常相似,但我不明白接受的答案是什么,我不认为这甚至是我在这里问的问题。

3 个答案:

答案 0 :(得分:2)

您无需使用?。除了罕见(通常很奇怪)的情况外,泛型不会像那样使用。

class MyClass {

}
class MyExtendedClass extends MyClass {

}
public void test() {
    Map<Integer, MyClass> myMap = new HashMap<Integer, MyClass>();
    myMap.put(1, new MyClass());
    myMap.put(2, new MyExtendedClass());
}

答案 1 :(得分:0)

这实际上只是一个

public HashMap<Integer, myClass> myMap = new HashMap<Integer, myClass>();

根据要求,将接受myClass的子类型。

答案 2 :(得分:-1)

尝试:

public HashMap<Integer, myClass> myMap = new HashMap<Integer,myClass>();