[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

解釋:

這個錯誤是很常見的錯誤,錯誤的提示已經很清楚了就是java的Object數組不能轉換成爲String[]數組,這就說明你要轉換的數組它本身是Object類型的數組,但是你卻非要把它轉換爲String類的數組,這當然是錯誤的。

 

示例:

  1. package com.dada;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. public class TestArray3 {  
  7.     public static void main(String[] args) {  
  8.         // 通常這種出錯的情況是我們從數據庫查詢出來了數據,然後要對數據進行操作所引起的  
  9.         // 這是因爲數據從數據庫查詢出來的時候是帶有自己的類型的,不一定都是string,  
  10.         //所以這個時候不可以直接把數據轉換爲String[],而是要先轉換爲Object[],  
  11.         //然後對轉換好的Object[]數組進行操作  
  12.         List list = new ArrayList();  
  13.         Object[] arr1 = new Object[]{"1",2,"3",4.34};  
  14.         Object[] arr2 = new Object[]{"1",5,"6",7};  
  15.         list.add(arr1);  
  16.         list.add(arr2);  
  17.           
  18.         // 這麼轉換是沒有錯的  
  19.         Object[] obj = (Object[]) list.get(0);  
  20.         // 獲取對應類型的數據  
  21.         String str = (String) obj[0];  
  22.         int i = (Integer) obj[1];  
  23.         String str1 = (String) obj[2];  
  24.         Double b = (Double) obj[3];  
  25.         System.out.println(  
  26.                 "str="+str+"\n"+  
  27.                         "i="+i+"\n"+  
  28.                         "str1="+str1+"\n"+  
  29.                         "b="+b+"\n"  
  30.                 );  
  31.           
  32.         // 下面的轉換就會報:[Ljava.lang.Object; cannot be cast to [Ljava.lang.String; 錯  
  33.         String[] r1 = (String[]) list.get(0);  
  34.           
  35.     }  
  36.       
  37. }  


解決辦法:

在遇到類型轉換出錯的時候,首先要觀察被轉換的對象的原來類型是什麼,有的時候,一些對象被包裝了很多層,這個就需要首先把它轉換成爲自己本來的類型的對象,然後根據這個對象再去操作裏面的元素,再一次的轉換類型,而且有的時候被分析的對象可能有多層的包裝,在轉換的過程中需要多層的解開她,就像白菜一樣,一層一層的剝開它本來的類型,直到獲取到對象的最終類型,然後把不能再分解的類型轉換成爲自己目標類型的對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章