2009-04-22 12 views
4

입력 객체에 반사를 사용하는 코드가 있고 객체에 저장된 데이터에 대한 처리가 있습니다. 입력 객체는 String 또는 int 또는 double 등이 될 수 있으며 때로는 다차원 배열이 될 수 있습니다. 나는 2 차원 배열을 위해 그것을하는 방법을 안다. 그러나 나는 어떤 주어진 차원 배열을 위해 일할 무언가를 선호 할 것이다. 이를 달성하기위한 지침이 도움이 될 것입니다. 감사합니다.반사 및 다차원 배열

+0

나는 C와 포인터를 망치기 시작한 이래로 다차원 배열이 모든 프로그래밍 문제에 대한 잘못된 대답을 발견했다. 한 가지 예외는 수학 기반 행렬 조작 일 수도 있지만 그 많은 수학이있는 것은 아마 어쨌든 (수학 언어로 작성된) 코드가 아닌 데이터로 취급되어야합니다. 그렇지 않으면 중첩 된 구조, 중첩 된 배열 또는 중첩 된 포인터/배열 조합은 항상 더 명확하게 읽는 것처럼 보입니다. 그것은 확실히 내가 옳은 문제를 보지 못했을 수 있습니다 .. –

답변

6

재귀 또는 루프 또는 둘 다 필요합니다.

void getStuffFromArray(Object obj) { 
    // assuming we already know obj.getClass().isArray() == true 
    Class<?> componentType = obj.getClass().getComponentType(); 
    int size = Array.getLength(obj); 
    for (int i = 0; i < size; i++) { 
     Object value = Array.get(obj, i); 
     if (value.getClass().isArray()) { 
      getStuffFromArray(value); 
     } else { 
      // not an array; process it 
     } 
    } 
} 
+0

좋은 대답. 나는 비슷한 코드를 만들었지 만 먼저 그것을 얻었습니다. –

+1

왜 "clazz"를 별도로 전달해야합니까? obj.getClass()가 아닌가? – newacct

+0

하, 그게 내가 대답 상자에 코드를 작성하는 것입니다. –