我在创建 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/