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的通用数组。
如何绕过这个?
答案 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();