一尘不染

具有泛型的映射数组出现问题

java

我知道我可以做:

Map<String, Object> map = new HashMap<String, Object>();

所以我应该能够:

Map<String, Object>[] maps = new HashMap<String, Object>[10];

但这不起作用,导致编译问题。


阅读 162

收藏
2020-12-03

共1个答案

一尘不染

这是java中泛型的怪癖。您必须像这样声明数组:

HashMap<String, Object>[] maps = new HashMap[10];

之后,您可以亲自创建每个地图,例如:

for(int i=0;i<10;i++)
{ 
    maps[i] = new HashMap<String,Object>();
}

这是擦除的结果。该数组是的数组HashMap。通用类型参数不保留。您将收到关于此的警告,但是它将编译并可以通过@SuppressWarning("unchecked")注释禁止显示警告。

2020-12-03