我正在尝试创建这样的地图

Map<String, Class<abstractClass>> map = HashMap<String, Class<abstractClass>>();


对于它的输入,我尝试了

map.put("exampleString", childClass.class);


但这是行不通的,IDE会说错第二个参数类型。

Found: java.lang.Class<childClass>, required java.lang.Class<abstractClass>


即使它们之间存在继承关系。
有谁知道如何解决这个问题?

提前致谢!

最佳答案

您需要一个通用通配符:

Class<? extends abstractClass>


这是因为默认情况下通用参数是不变的。您只能在更改前将abstractClass.class放入地图中。

通过添加<? extends abstractClass>,可以使通用参数相反。在其他情况下,可以将extends更改为super以实现协方差。有一个缩写词,用于记住何时使用extends和何时使用super,称为PECS

10-05 21:54