Java:如何将列表转换为泛型类型的数组

Java:如何将列表转换为泛型类型的数组,java,arrays,list,Java,Arrays,List,Java使用List.toArray()将列表转换为对象[]。我想将列表转换为数组而不是对象。这是我的代码: public static <A> A[] toArray(List<A> list) { A[] rtn = null; if (list != null) { int mi = list.size(); rtn = new A[mi];//Error: Cannot create a generic array

Java使用List.toArray()将列表转换为对象[]。我想将列表转换为数组而不是对象。这是我的代码:

public static <A> A[] toArray(List<A> list) {
    A[] rtn = null;
    if (list != null) {
        int mi = list.size();
        rtn = new A[mi];//Error: Cannot create a generic array of A
        for (int i = 0; i < mi; i++) {
            rtn[i] = list.get(i);
        }
    }
    return rtn;
}
public static A[]toArray(列表){
A[]rtn=null;
如果(列表!=null){
int mi=list.size();
rtn=new A[mi];//错误:无法创建
对于(int i=0;i
但是,带注释的行会导致错误:无法创建的泛型数组


我怎样才能绕过它呢?

这不容易,应该可以

@SuppressWarnings("unchecked")
public static <A> A[] toArray(List<A> list, Class<A> cls) {
    return list.toArray((A[]) Array.newInstance(cls, list.size()));
}
@SuppressWarnings(“未选中”)
公共静态A[]toArray(列表,类cls){
返回list.toArray((A[])Array.newInstance(cls,list.size());
}

将其转换为Arraylist,然后使用重写的toArray()命令

Arraylist newList=newarraylist(yourStringList);
String[]stringArray=新字符串[newList.size()];
stringArray=newList.toArray();

您可以执行
newList.toArray(stringArray)
,但我猜这个问题是针对那些您不知道类型的情况(比如示例中的
String
)的,转换为
java.util.ArrayList
不会改变任何东西。
Arraylist<String> newList = new Arraylist(yourStringList);
String [] stringArray = new String[newList.size()];
stringArray = newList.toArray();