Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将泛型(T)的ArrayList转换为直数组?_Java_Generics_Arraylist - Fatal编程技术网

Java 如何将泛型(T)的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[]

第一次使用泛型

我已成功创建了泛型对象的ArrayList,并希望将其转换为常规数组
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
。是的,代码失败了。。哈哈。虽然不算太多。谢谢你的帮助,我学到了很多关于这方面的知识。。