>>434,>>436
>ArrayList<Integer> a = new ArrayList<Integer>();
からArrayList#toArray()で取れるのはInteger[]まで

a.get(i)はIntegerで取れているけど
>b[i]=a.get(i);
はアンボクシングが働いているので、正確にはb[i]=a.get(i).intValue();

get()までしか扱えないので
>Integer[] → int[] へのキャストがわからずエラーがでてしまいます。
という見方もできたりするでしょう
(正しくは(?)toArray()はArrayList<Integer>をInteger[]にするまでしかしないので)

commons Langまで持ち出して
Integer[] tmp = a.toArray(new Integer[a.size()]);
int[] b = ArrayUtils.toPrimitive(tmp);
とかも考えられなくはないでしょうけど
>>435の言ってることの方がいいだろうと思います
(2回配列を作ることになるし、余計なチェックコードとかも増えることにもなる@ArrayList#toArray(),ArrayUtils#toPrimitive()内)