带有generics的地图数组问题
可能重复:
Javagenerics和数组初始化
如何在Java中实例化一组地图?
我知道我能做到:
Map map = new HashMap();
所以我应该能够:
Map[] maps = new HashMap[10];
但这不起作用,给出编译问题。
这是java中generics的怪癖。 你必须像这样声明数组:
HashMap[] maps = new HashMap[10];
稍后您可以亲自创建每个地图,例如:
for(int i=0;i<10;i++) { maps[i] = new HashMap(); }
这是擦除的结果。 该数组是HashMap
的数组。 不保留generics类型参数。 你会得到一个警告,但它会编译,你可以使用@SuppressWarning("unchecked")
注释来抑制警告。