為了更好的理解我們先看下面的例子:
package com.yonyou.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * 測試類 * @author 小浩 * @創建日期 2015-3-2 */ public class Test{ public static void main(String[] args) { List<String> list=new ArrayList<String>(); list.add("Hello"); list.add("World"); list.add("HAHAHAHA"); String[] strArray2=new String[list.size()]; list.toArray(strArray2); for(int i=0;i<strArray2.length;i++) { System.out.println(strArray2[i]); } //下面的內容將會出現強制轉換的錯誤 String[] strArray=(String[]) list.toArray(); //list.toArray()會返回Object[]類型的數組,想強制轉換為String[] for(int i=0;i<strArray.length;i++) { System.out.println(strArray[i]); } } }
對於上面的出現的問題,主要原因在於數組類型的上下級沒有弄明白。
一般對於強制類型轉換而言,子類可以強制轉換為對應的父類,但父類是不能夠強制轉換為對應的子類的哦。
上面的String是Object類的子類,代碼中企圖通過將相應的父類(Object[])轉換為對應的子類(String[]),在編譯的時候不會報錯,
但在運行的時候就會拋出運行時異常:強制類型轉換錯誤。
此外,補充一個知識點,子類轉換為對應的父類的過程我們稱之為對象的上轉型。