【问题标题】:Create array of generic class type创建泛型类类型数组
【发布时间】:2013-01-12 06:19:36
【问题描述】:

我在创建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 中有没有办法创建一个类的数组,其中该类是泛型类型?

【问题讨论】:

    标签: java arrays class


    【解决方案1】:

    你应该清楚 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);
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-27
        • 1970-01-01
        • 2021-09-29
        • 1970-01-01
        • 2011-07-22
        • 2015-05-09
        相关资源
        最近更新 更多