解釋:
這個錯誤是很常見的錯誤,錯誤的提示已經很清楚了就是java的Object數組不能轉換成爲String[]數組,這就說明你要轉換的數組它本身是Object類型的數組,但是你卻非要把它轉換爲String類的數組,這當然是錯誤的。
示例:
- package com.dada;
- import java.util.ArrayList;
- import java.util.List;
- public class TestArray3 {
- public static void main(String[] args) {
- // 通常這種出錯的情況是我們從數據庫查詢出來了數據,然後要對數據進行操作所引起的
- // 這是因爲數據從數據庫查詢出來的時候是帶有自己的類型的,不一定都是string,
- //所以這個時候不可以直接把數據轉換爲String[],而是要先轉換爲Object[],
- //然後對轉換好的Object[]數組進行操作
- List list = new ArrayList();
- Object[] arr1 = new Object[]{"1",2,"3",4.34};
- Object[] arr2 = new Object[]{"1",5,"6",7};
- list.add(arr1);
- list.add(arr2);
- // 這麼轉換是沒有錯的
- Object[] obj = (Object[]) list.get(0);
- // 獲取對應類型的數據
- String str = (String) obj[0];
- int i = (Integer) obj[1];
- String str1 = (String) obj[2];
- Double b = (Double) obj[3];
- System.out.println(
- "str="+str+"\n"+
- "i="+i+"\n"+
- "str1="+str1+"\n"+
- "b="+b+"\n"
- );
- // 下面的轉換就會報:[Ljava.lang.Object; cannot be cast to [Ljava.lang.String; 錯
- String[] r1 = (String[]) list.get(0);
- }
- }
解決辦法:
在遇到類型轉換出錯的時候,首先要觀察被轉換的對象的原來類型是什麼,有的時候,一些對象被包裝了很多層,這個就需要首先把它轉換成爲自己本來的類型的對象,然後根據這個對象再去操作裏面的元素,再一次的轉換類型,而且有的時候被分析的對象可能有多層的包裝,在轉換的過程中需要多層的解開她,就像白菜一樣,一層一層的剝開它本來的類型,直到獲取到對象的最終類型,然後把不能再分解的類型轉換成爲自己目標類型的對象。