我想将泛型类型转换ArrayList
为泛型类型数组(相同的泛型类型)。例如,我有ArrayList<MyGeneric<TheType>>
并且我想获得MyGeneric<TheType>[]
.
我尝试使用该toArray
方法和铸造:
(MyGeneric<TheType>[]) theArrayList.toArray()
但这不起作用。我的另一个选择是创建一个数组MyGeneric<TheType>
并一个接一个地插入数组列表的元素,将它们转换为正确的类型。但是我试图创建这个数组的一切都失败了。
我知道我必须使用Array.newInstance(theClass, theSize)
,但我如何获得的类MyGeneric<TheType>
?使用这个:
Class<MyGeneric<TheType>> test = (new MyGeneric<TheType>()).getClass();
不工作。IDE 声明Class<MyGeneric<TheType>>
并且Class<? extends MyGeneric>
是不兼容的类型。
这样做:
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;
ClassCastException
在线提出 a data[i] = ...
。
我该怎么办?
笔记:
我需要该数组,因为我必须将它与第三方库一起使用,因此“在此处使用 insert-the-name-of-the-collection-here”不是一个选项。