【问题标题】:Problem with map array with generics [duplicate]带有泛型的映射数组的问题[重复]
【发布时间】:2011-09-08 04:57:16
【问题描述】:

可能重复:
Java generics and array initialization
How does one instantiate an array of maps in Java?

我知道我能做到:

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

所以我应该能够:

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

但这不起作用,会出现编译问题。

【问题讨论】:

  • 只是想知道,为什么不使用List 而不是老式数组?顺便说一句,这个问题以前被问过很多次。右栏的相关部分可能有一些。

标签: java arrays generics map


【解决方案1】:

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

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

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

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

这是erasure 的结果。该数组是HashMaps 的数组。不保留泛型类型参数。您会收到关于此的警告,但它会编译,您可以使用 @SuppressWarning("unchecked") 注释取消警告。

【讨论】:

    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多