我知道我可以做:
Map<String, Object> map = new HashMap<String, Object>();
所以我应该能够:
Map<String, Object>[] maps = new HashMap<String, Object>[10];
但这不起作用,导致编译问题。
这是java中泛型的怪癖。您必须像这样声明数组:
HashMap<String, Object>[] maps = new HashMap[10];
之后,您可以亲自创建每个地图,例如:
for(int i=0;i<10;i++) { maps[i] = new HashMap<String,Object>(); }
这是擦除的结果。该数组是的数组HashMap。通用类型参数不保留。您将收到关于此的警告,但是它将编译并可以通过@SuppressWarning("unchecked")注释禁止显示警告。
HashMap
@SuppressWarning("unchecked")