2013-06-13 2 views
2

개체를 다차원 배열로 캐스팅해야하지만 어떻게 처리해야하는지 알 수 없습니다. 객체에는 임의의 객체 (boolean [] [], int [] [], String [] [] 등)의 배열이 포함될 수 있습니다.개체를 개체로 캐스팅 [] []

public static void main(String[] args) { 
    boolean[][] b = new boolean[10][10]; 

    Object o = b; 

    Object[][] multiArray = (Object[][])o; 

    for(int i = 0; i < multiArray.length; i++) { 
     for(int j = 0; j < multiArray[i].length; j++) { 
      // Do something 
     } 
    } 
} 
+2

"나는 다차원 배열로 객체를 캐스팅해야"<- 당신은 할 수 없습니다 – fge

답변

4

boolean[][]는 캐스트가 불법 당신에게 말하는 당신에게 오류를 제공하는 booleanObject되지 않기 때문에 배열, 공변 있습니다 따라서 있지만, 프리미티브의 배열입니다 : 다음은 샘플 코드입니다. Boolean[][]을 사용할 수 있습니다. 또한 unboxing 및 boxing은 배열에서 작동하지 않습니다.

3

당신은 그렇게 할 수 없습니다. boolean은 기본 유형이며 참조 유형은 아닙니다. 따라서 boolean 값의 배열 (또는 다차원 배열) 자체는 Object이지만 요소는 여전히 boolean 값이며 Object이 아닌 값입니다.

개체 배열을 원할 경우 boolean 값을 Boolean 개체로 입력해야합니다. 당신은 여전히 ​​권투없이 루프를 사용하여 코드를 작성할 수 있습니다

참고 : Boolean

for(int i = 0; i < b.length; i++) { 
    for(int j = 0; j < b[i].length; j++) { 
     // Do something with b[i][j] as a boolean 
    } 
} 
1

변환 boolean. 자바는 원시 boolean의 배열이 다른 데이터 유형에 대한 Boolean (같은 고려의 배열, 예를 들면로 대체 된 것을 알았어,

1

이 시도 (서브 클래스와 슈퍼 클래스로) 당신을 위해 ObjectBoolean 캐스트 할 수 있습니다 Integer를 사용 오브젝트 유형입니다 int 등) 및 대신에Object에 캐스트 할 수 있습니다

public static void main(String[] args) { 

    Boolean[][] b = new Boolean[10][10]; 
    // fill b with values 

    Object[][] multiArray = new Object[10][10]; 

    for(int i = 0; i < multiArray.length; i++) { 
     for(int j = 0; j < multiArray[i].length; j++) { 
      multiArray[i][j] = b[i][j]; // no cast is needed 
     } 
    } 

} 
관련 문제