如何在java中创建安全的通用数组对象?

如何在java中创建安全的通用数组对象?,java,arrays,generics,Java,Arrays,Generics,嘿,这是我的第一篇文章,我有这个问题 如您所见,这是所需的方法 所以我试图创建一个数组,但出现了一个异常 有什么建议吗 这是我的密码 public class GArrayFactory { // Create and return an array of size n public static <T extends Comparable<T>> GArray<T>[] getGArray(int n) { GArray<T>[]

嘿,这是我的第一篇文章,我有这个问题 如您所见,这是所需的方法

所以我试图创建一个数组,但出现了一个异常 有什么建议吗

这是我的密码

public class GArrayFactory {

// Create and return an array of size n

public static <T extends Comparable<T>> GArray<T>[] getGArray(int n) {

    GArray<T>[] array = (GArray<T>[]) new Object[n];

    return array ;

可以使用以下方法创建通用数组:

public class GArrayFactory<E> {

    private E[] array;

    public GArrayFactory(Class<E> clazz, int size) {
        final E[] array = (E[]) Array.newInstance(clazz, size);
        this.array = array;
    }

    public E[] getArray() {
        return array;
    }
}

可以找到进一步的解释

看起来您的代码有误。请注意LGarray而不是GArray。@Gendarme不,这正是引用描述符的组成方式,即L++;。您附加的屏幕截图具有GArray返回类型,但没有代码中的GArray[]。需要哪一个?这也是一个很好的副本:@Gendarme他们试图创建的数组的组件类型不是来自类型参数的类型。。
public class GArrayFactory<E> {

    private E[] array;

    public GArrayFactory(Class<E> clazz, int size) {
        final E[] array = (E[]) Array.newInstance(clazz, size);
        this.array = array;
    }

    public E[] getArray() {
        return array;
    }
}