2 回答

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
ArrayList.toArray()總是準(zhǔn)確返回Object[],從不返回某個(gè)子類型。
為此,您需要傳入 aT[]或IntFunction<T[]>作為參數(shù)(傳遞給 的構(gòu)造函數(shù)StreamParser或方法),并在toArray()調(diào)用中使用 this :
arr = cache.toArray(someIntFn.apply(0 /* or cache.size() */));
// Or
arr = cache.toArray(someArray);

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
您應(yīng)該使用第二種方法 toArray 帶一個(gè)額外的參數(shù)。這是 javadoc 鏈接:https ://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#toArray%28java.lang.Object%5B%5D%29
關(guān)于創(chuàng)建泛型數(shù)組,這里是做它所需的技巧:
public static <T> T[] genArray(Class<T> clazz, int size){ return (T[]) Array.newInstance(clazz, size); }
這意味著要執(zhí)行一個(gè)額外的步驟,您需要讓實(shí)際的類與該T
參數(shù)匹配
添加回答
舉報(bào)