Java - HashMap<Integer, ? extends mySuperclass>();

Java - HashMap<Integer, ? extends mySuperclass>();

我如何创建一个 HashMap,将 Integerint 映射到扩展指定 Class 的 class 的 class 实例:

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.

尝试添加不扩展 Superclass 的 class 应该不起作用。

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

这真的只是一个

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

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

您不需要使用 ?。除非在极少数(通常是奇怪的)情况下,否则不会那样使用泛型。

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());
}

尝试:

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