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

时间:2014-04-03 10:25:56

标签: java arrays list

Java有List.toArray()将列表转换为Object []。我想将A的列表转换为A而不是Object的数组。这是我的代码:

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;
}

但是带注释的行会导致错误:无法创建A的通用数组。

如何绕过这个?

2 个答案:

答案 0 :(得分:2)

这不容易,这应该有用

@SuppressWarnings("unchecked")
public static <A> A[] toArray(List<A> list, Class<A> cls) {
    return list.toArray((A[]) Array.newInstance(cls, list.size()));
}

答案 1 :(得分:-1)

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

Arraylist<String> newList = new Arraylist(yourStringList);
String [] stringArray = new String[newList.size()];
stringArray = newList.toArray();