1

我在创建 a 的数组时遇到了一些困难Class,其中Classa 是泛型类型。

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

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

我得到错误,dataType cannot be resolved to a type。这本身对我来说没有意义,因为dataType它拥有一个类类型。尽管如此,我还是尝试使用以下语句直接插入它(给出与以前相同的错误):

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

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

Java中有没有办法创建一个类的数组,该类是泛型类型?

4

2 回答 2

2

您应该清楚 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);
}
于 2013-01-12T09:35:23.343 回答
0

'dataType' 已经是一个类,所以在它上面调用 getClass() 不是答案(你只会得到 Class.class)。你可以用'java.lang.ref.Arrays.newArray()'来做到这一点。

于 2013-01-12T06:36:49.097 回答