当前位置: 首页 > 知识库问答 >
问题:

无法创建的通用数组-如何创建Map的数组?

暴德运
2023-03-14

我想使用简单的Jdbc插入类和执行批处理方法

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

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

所以我需要传递一个< code>Map数组

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

这是错误:无法创建 Map 的通用数组

列表


共有3个答案

沈飞翔
2023-03-14

我在这方面遇到了一些困难,但我已经想出了一些事情,我会尽可能简单地分享。

我的泛型经验仅限于集合,因此我在类定义中使用它们,例如:

public class CircularArray<E> {

其中包含数据成员:

private E[] data;

但是你不能使和数组的类型泛型,所以它有方法:

@SuppressWarnings("unchecked")
private E[] newArray(int size)
{
    return (E[]) new Object[size];  //Create an array of Objects then cast it as E[]
}

在构造函数中:

data = newArray(INITIAL_CAPACITY);  //Done for reusability

这适用于一般的泛型,但是我需要一个可以排序的列表:一个可比较的列表。

public class SortedCircularArray<E extends Comparable<E>> { 
//any E that implements Comparable or extends a Comparable class

其中包含数据成员:

private E[] data;

但是我们的新班级抛出java.lang.ClassCastException:

@SuppressWarnings("unchecked")
private E[] newArray(int size)
{
    //Old: return (E[]) new Object[size];  //Create an array of Objects then cast it as E[]
    return (E[]) new Comparable[size];  //A comparable is an object, but the converse may not be
}

在构造函数中,一切都是相同的:

data = newArray(INITIAL_CAPACITY);  //Done for reusability

我希望这有帮助,我希望我们更有经验的用户在我犯错误时纠正我。

洪祺
2023-03-14

您可以创建地图的通用数组。

>

  • 创建地图列表。

    List<Map<String, ?>> myData = new ArrayList<Map<String, ?>>();
    

    初始化数组。

    Map<String,?>[] myDataArray = new HashMap[myData.size()];
    

    从列表填充数组中的数据。

    myDataArray = myData.toArray(myDataArray);
    

  • 洪弘亮
    2023-03-14
    匿名用户

    由于Java中泛型的工作方式,您不能直接创建泛型类型的数组(如< code>Map

    这应该适合您的需要:

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

    您可能希望用< code > @ suppress warnings(" unchecked ")来注释发生这种情况的方法,以防止显示警告。

     类似资料:
    • 问题内容: 我想使用simpleJdbcInsert类和executeBatch方法 http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jdbc/core/simple/SimpleJdbcInsert.html 所以我需要传递一个as参数数组。如何创建这样的数组?我试过的是 错误:无法创建通用数组 A

    • 问题内容: 我不理解泛型和数组之间的联系。 我可以使用通用类型创建数组引用: 但是不能创建具有通用类型的数组对象: 但它有效: 问题答案: 你不应该混淆数组和泛型。他们在一起不好。数组和泛型类型执行类型检查的方式有所不同。我们说数组是经过整形的,而泛型则不是。结果,你会看到这些差异适用于数组和泛型。 数组是协变的,泛型不是: 那意味着什么?你现在必须已经知道以下分配有效: 基本上,Object[]

    • 问题内容: 该代码似乎不起作用,它将抛出异常: java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为… 有人可以告诉我如何创建具有通用类型的数组吗?谢谢。 问题答案: 您不能:必须将类作为参数传递:

    • 问题内容: 由于Java泛型的实现,因此不能有以下代码: 如何在保持类型安全的同时实现此目的? 我在Java论坛上看到了这样的解决方案: 但是我真的不知道发生了什么。 问题答案: 我不得不问一个问题:您的GenSet“已选中”还是“未选中”?那是什么意思? 检查:强打字。GenSet明确地知道什么类型的包含对象(即它的构造是明确要求有Class 参数,当他们通过了类型不是参数的方法会抛出异常E。见

    • 我有以下代码,运行时会出现错误:TypeError:无法读取未定义的属性“split” 您可以在这里运行它。 我有数组,我想将它转换为数组的数组,首先在处拆分以分离数组,然后在处拆分以创建数组中的项。因此此列表将如下所示: [[data1,data2,data3],[data4,data5,data6],[data7,data8,data9]] 执行类似的操作,但当我尝试使用访问它时,它只给我第一

    • 问题内容: 我正在尝试在Swift中构建Promises的基本实现,并且我需要能够向数组中添加函数,但是我不确定如何使它起作用。 我发现,当我尝试执行以下操作时,Swift Playground不会建议您: 这很有道理-Swift无法推断出-的类型,但这就是我的问题所在。我不确定如何预定义函数数组。 是否可以在Swift中创建函数数组?我想是这样,职能是一等公民。 问题答案: 绝对有可能,只需将数