我在创建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中是否有办法创建类的数组,其中类是泛型类型?
答案 0 :(得分: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);
}
答案 1 :(得分:0)
'dataType'已经是一个类了,所以在它上面调用getClass()不是答案(你只需要获得Class.class)。你可以用'java.lang.ref.Arrays.newArray()'来完成这个。