如何制作HashMap,将Integer
或int
映射到扩展指定类的类的类实例:
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非常相似,但我不明白接受的答案是什么,我不认为这甚至是我在这里问的问题。
答案 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>();