我有一個通用的(我不太清楚,如果這是正確的術語..)方法,將一個對象添加到數組。如何從一個Object []轉換爲另一個數組類型?
@SuppressWarnings("unchecked")
public static <T>T[] appendArray(T[] a, T b)
{
T[] temp = (T[])new Object[a.length + 1];
System.arraycopy(a, 0, temp, 0, a.length);
temp[a.length] = b;
return temp;
}
在Eclipse中,這個代碼給了我沒有錯誤,沒有警告(除了抑制「未登記」警告),而且,在我看來,這應該工作。但是,當我嘗試打電話這種方法的東西如..
Integer[] a=new Integer[]{1,2,3};
Integer b=4;
a = appendArray(a, b);
它給了我一個ClassCastException
,在這種情況下,代碼的第2段第3行,我張貼。該錯誤說,[Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
我既沒有看到,也沒有明白爲什麼它會這樣做..我的意思是,我使用的是泛型,那麼爲什麼它會有一個Object[]
,而不是我在實例化過程中鍵入T
?如果它是第4行(當然是代碼的第一位),爲什麼不是拋出異常而不是第二位代碼的第3行?
爲什麼這是downvoted? –