2013-01-12 158 views
1

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

让我们举个例子功能,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中创建一个类的数组,其中类是一个泛型?

回答

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); 
} 
0

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