Java 创建访问单个特定类型的泛型数组

Java 创建访问单个特定类型的泛型数组,java,arrays,generics,casting,arraylist,Java,Arrays,Generics,Casting,Arraylist,我想将泛型类型的ArrayList转换为泛型类型的数组(相同的泛型类型)。例如,我有ArrayList,我想获得MyGeneric[] 我尝试了使用toArray方法和铸造: (MyGeneric<TheType>[]) theArrayList.toArray() 不起作用。IDE声明,Class和Class首先创建一个您类型的数组,然后您应该调用: T[]toArray(T[]a) 返回一个数组,该数组以正确的方式包含此列表中的所有元素 顺序(从第一个元素到最后一个元素);的

我想将泛型类型的
ArrayList
转换为泛型类型的数组(相同的泛型类型)。例如,我有
ArrayList
,我想获得
MyGeneric[]

我尝试了使用
toArray
方法和铸造:

(MyGeneric<TheType>[]) theArrayList.toArray()

不起作用。IDE声明,
Class
Class首先创建一个您类型的数组,然后您应该调用:

T[]toArray(T[]a)
返回一个数组,该数组以正确的方式包含此列表中的所有元素 顺序(从第一个元素到最后一个元素);的运行时类型 返回的数组是指定数组的数组

阅读说明书:

如果您的数组比列表短,则该方法将分配并返回一个新数组;如果数组长于列表,则数组中的其余项将设置为null

-----------范例----------

ArrayList列表;
//......
MyGeneric[]returnedArray=新建MyGeneric[list.size()];//无法创建常规数组。对错误的警告。别介意,你可以抑制它,也可以忽略它。
returnedArray=list.toArray(returnedArray);//聪!您得到了包含列表中所有元素的MyGeneric[]数组。

什么是“先创建您类型的数组”?既然我有
ArrayList
,那么
T
应该是
type
还是
MyGeneric
?因为我不明白该方法是如何工作的,所以您能给出一个使用示例吗。@Bakuriu t应该是MyGeneric您也可以执行
new MyGeneric[list.size()]
以避免使用原始类型
Class<MyGeneric<TheType>> test = (new MyGeneric<TheType>()).getClass();
    Class<? extends MyGeneric> test = (new MyGeneric<TheType>()).getClass();

    MyGeneric[] data = (MyGeneric[]) Array.newInstance(test, theSize);

    for (int i=0; i < theSize; i++) {
        data[i] = theArrayList.get(i);
    }
    return data;
<T> T[]   toArray(T[] a)
ArrayList<MyGeneric<TheType>> list;
//......
MyGeneric<TheType>[] returnedArray = new MyGeneric[list.size()]; // You can't create a generic array. A warning for an error. Don't mind, you can suppress it or just ignore it.
returnedArray = list.toArray(returnedArray); // Cong! You got the MyGeneric<TheType>[] array with all the elements in the list.