我正在尝试创建这样的地图
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。