2012-05-08 5 views
2

2D 개체 배열 열을 1D 문자열 배열로 캐스팅하려고합니다. 나는 데이터 자체를 받고 아무 문제가 없지만, 런타임 오류가 생성하는 데이터 유형입니다 :2D 개체 배열의 열을 1D 문자열 배열로 캐스트

Object[][] currentData = BackOffice.getData(); 
String[] dataWanted = null; 

    for (int i=0; i<currentData.length; i++) 
     dataWanted = (String[])currentData[i][1]; 

:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.String;

이 내가 작업하고있는 코드 조각의 예를 나는 (String [])을 사용하여 캐스트 할 수 있다고 생각했지만, 분명히 ... 어떤 도움을 주셨습니다! 만약 내가 제대로 이해하고

답변

3

, 당신은하고 싶지 :

String[] dataWanted = new String[currentData.length]; 

for (int i=0; i<currentData.length; i++) 
    dataWanted[i] = currentData[i][1]; 
+0

Yaaay, 내가 원했던 것처럼, currentData [i] [1]보다 (String)을 사용하여 행복하게 캐스트 할 수 있습니다. 감사! 물론 dataWanted [i] ...를 사용해야했습니다. – dgBP

1

currentData는, 객체의 2D 배열입니다 그래서 currentData[i][1]은 하나의 객체로 평가합니다. dataWanted은 문자열 배열입니다. 단일 객체를 배열 유형으로 캐스트 할 수 없습니다. 또한 배열을 항목을 삽입하기 전에 크기로 초기화해야합니다. 당신이 dataWanted 배열에 각 개체를 배치하려는 경우이 같은 것을 할 것입니다 : 이것은 당신이 달성하기 위해 노력하고 있지 어떤 경우

String[] dataWanted = new String[currentData.length]; 
for (int i = 0; i < currentData.length; i++) { 
    dataWanted[i] = (String)currentData[i][1]; 
} 

를 한 후 귀하의 질문에 구체적으로 편집하십시오 .

+0

예치, 그 덕분에 완벽한 감사 :) – dgBP