填充用<! - ? - >声明的数组

时间:2016-07-13 14:29:58

标签: java arrays generics wildcard

我正在阅读Java Generics并且遇到阵列填充问题。

Gen<?> array[] = new Gen<?>[10];

for (int i = 0; i < array.length; i++) {
        array[i] = (Integer) (i+3);
    }
    for (int i  = 0; i < array.length; i++) {
        System.out.print(array[i] + " ");
    }
}

编译器说这个错误:不兼容的类型:整数不能转换为gen。

问题是,在这种情况下,如何填充或告知阵列我将要放入什么内容?谢谢。

2 个答案:

答案 0 :(得分:0)

我不了解您的要求,但以下代码可能会帮助您了解其工作原理 -

<强> DataTypes.java

public class DataTypes {
    public static void main(String[] args) {
        Gen<?> array[] = new Gen<?>[10];
        for (int i = 0; i < array.length; i++) {
            array[i] = new Gen<Integer>(i);
        }
        for (int i  = 0; i < array.length; i++) {
            System.out.print(array[i].getData() + " ");
        }
    }
}

<强> Gen.java

class Gen<T> {
    T data;

    public Gen(T data) {
        this.data = data;
    }

    public T getData() {
        return data;
    }
}

答案 1 :(得分:0)

实际上,您无法实例化泛型类型的任何内容。因此,您可以尝试创建对象数组,并在其中添加您添加的内容:

private Object[] tees;

public void addAll(T... objects)
{
    tees = new Object[objects.length];
    for (int i = 0; i < objects.length; i++)
        tees[i] = objects[i];
}

@SuppressWarnings("unchecked") // when you cast without checking
public T[] getTees()
{
    return (T[]) tees;
}

另外,你问的问题对我来说似乎很奇怪;当然,它可能会脱离背景,但你可能会遇到一些概念问题。