Java 如何将泛型(T)的ArrayList转换为直数组?
第一次使用泛型 我已成功创建了泛型对象的ArrayList,并希望将其转换为常规数组Java 如何将泛型(T)的ArrayList转换为直数组?,java,generics,arraylist,Java,Generics,Arraylist,第一次使用泛型 我已成功创建了泛型对象的ArrayList,并希望将其转换为常规数组T[] 通常,这是类似于 String[] x = (String[])myStrings.toArray(new String[0]) 但是,在这种情况下,用T替换字符串不起作用。i、 e return (T[]) ret.toArray(T[0]); 下面是我的方法的完整代码,但不确定它是否相关: 您不能为泛型类型变量t创建带有新t[size]的数组。Java不支持它 您可以将对象[]数组强制转换为T[]
T[]
通常,这是类似于
String[] x = (String[])myStrings.toArray(new String[0])
但是,在这种情况下,用T
替换字符串不起作用。i、 e
return (T[]) ret.toArray(T[0]);
下面是我的方法的完整代码,但不确定它是否相关:
您不能为泛型类型变量
t
创建带有新t[size]
的数组。Java不支持它
您可以将对象[]
数组强制转换为T[]
,在大多数情况下都可以
在这种情况下,这将是:
return (T[]) ret.toArray();
提示:在另一个问题中,请阅读“选中”部分,因为您确实可以访问方法中的
Class
。注意List.toArray(target)
:T[]toArray(T[]target)
。这意味着在(String[])myStrings.toArray(new String[0])
中不需要强制转换。谢谢-除了返回对象数组之外,没有其他方法了吗?我觉得这违背了我的目的,因为我将不必将这个对象数组转换为正确的类类型。我最终使用以下代码来处理这个转换:code
t[]rett=(t[])array.newInstance(thiscape,ret.size());对于(inti=0;icode
@GregBengis,尝试将代码放入注释中不是很有帮助,但是,如果您有权访问类
对象,则可以使用数组。newInstance
。是的,代码失败了。。哈哈。虽然不算太多。谢谢你的帮助,我学到了很多关于这方面的知识。。