關於Java中強制類型轉換的問題


 為了更好的理解我們先看下面的例子:

 

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[]),在編譯的時候不會報錯,

但在運行的時候就會拋出運行時異常:強制類型轉換錯誤。

此外,補充一個知識點,子類轉換為對應的父類的過程我們稱之為對象的上轉型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM