java - 创建泛型类类型的数组

标签 java arrays class

我在创建 Class 数组时遇到一些困难,其中 Class 属于泛型类型。

让我们看一个示例函数,addOverlay,如下(假设mapSize是一个静态类变量):

public void addOverlay(Class<?> dataType) {
    dataType[][] d = new dataType[mapSize][mapSize];
    overlayMap.add(new Class[mapSize][mapSize]);
}

我收到错误,dataType 无法解析为类型。这本身对我来说没有意义,因为 dataType 拥有一个类类型。尽管如此,我还是尝试直接插入它,并使用以下语句(这给出了与之前相同的错误):

overlayMap.add(new dataType[mapSize][mapSize]);

等等,等等。我还尝试过使用dataType.getClass()

Java 中有没有一种方法可以创建类的数组,其中该类是泛型类型?

最佳答案

你应该清楚,dataType只是Class类的一个实例,它只保存某个类的元数据。根据您的情况,您可以像这样修改您的方法:

public void addOverlay(Class<?> dataType) {
    Object subArray = Array.newInstance(dataType, mapSize);
    Object array = Array.newInstance(subArray.getClass(), mapSize);
    for (int i = 0; i < mapSize; i++) {
        Array.set(array, i, subArray);
    }
    overlayMap.add(array);
}

关于java - 创建泛型类类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14290852/

相关文章:

c - 在c中将二维数组从一个函数传递到另一个函数?

javascript - 在 JavaScript 中比较数组

c++ - 使用公共(public)静态常量类成员的声明

python - 在 python 中“合并”两个对象

java - 与 "&&"和 "||"混淆

java - 为什么这个类型参数会保留在字节码中?

java - Hashmap 中带有空格的 JSON - 来自 api

java - 如何在类之间共享类常量?

java - try/catch/finally 的惊人输出?

javascript - 如果我希望用户和管理员登录后显示不同的布局,我该怎么办?