这里利用了Array.newInstance(..)方法,但还有一个问题,当List的长度为0的时候,是获得不了T的具体class的。好在长度为0的数组没有意义,所以干脆返回了null。
代码如下:
public static <T> T[] getArray(List<T> collection) {
if (collection == null || collection.size() == 0)
return null;
@SuppressWarnings("unchecked")
T[] tArray = ((T[]) Array.newInstance(collection.get(0).getClass(), 0));
return collection.toArray(tArray);
}