“无法创建 ..的泛型数组”- 如何创建映射数组<字符串、对象>?

2022-09-01 00:59:40

我想使用 simpleJdbcInsert 类和执行Batch方法

public int[] executeBatch(Map<String,Object>[] batch)

http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jdbc/core/simple/SimpleJdbcInsert.html

所以我需要传递一个 as 参数的数组。如何创建这样的数组?我尝试的是Map<String,Object>

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

错误:无法创建 泛型数组Map<String, Object>

A会更容易,但我想我需要一个数组。那么如何创建一个数组?谢谢List<Map<String, Object>>Map<String, Object>


答案 1

由于 Java 中的泛型的工作方式,您无法直接创建泛型类型的数组(如 )。相反,您可以创建原始类型 () 的数组并将其转换为 。这将导致不可避免的(但可抑制的)编译器警告。Map<String, Object>[]Map[]Map<String, Object>[]

这应该适用于您需要的:

Map<String, Object>[] myArray = (Map<String, Object>[]) new Map[10];

您可能希望使用 中出现这种情况的方法进行批注,以防止显示警告。@SuppressWarnings("unchecked")


答案 2

您可以创建映射的泛型数组。

  1. 创建地图列表。

    List<Map<String, ?>> myData = new ArrayList<Map<String, ?>>();
    
  2. 初始化数组。

    Map<String,?>[] myDataArray = new HashMap[myData.size()];
    
  3. 从列表中填充数组中的数据。

    myDataArray = myData.toArray(myDataArray);