2014-04-25 6 views
1

오브젝트 배열이 무언가라는 사실을 알고있는 o 오브젝트가 있습니다. 을 반복하는 방법은 무엇입니까?오브젝트 반복하기

Object o; 
if (o != null && o.getClass().isArray()) { 
    for (Object each : o) { // compile error, of course 
    System.out.println(each); 
    } 
} 

답변

0

당신은 그것을 통해 반복 처리하기 전에 배열에 객체를 캐스팅했다. 이 같은 배열에

if (o != null && o.getClass().isArray()) { 
    Object[] temp (Object[] o) 
    for (Object each : temp) { 
    System.out.println(each); 
    } 
} 
+1

꽤 분명합니다. 나는 그것이 ClassCastException을 던질 것이지만 그것은 String []이거나 다른 것입니다. – milan

2

캐스트를 : 당신의 'O 경우

ArrayList<Array_Type> array= (ArrayList<Array_Type>) o; 
Iterator iterator=array.iterator(); 
System.out.println(iterator.next()); 

자바는 Collection을 통해 걸을 수 Iterator 인터페이스를, 그래서 :

public static void main(String... args) { 
    Object o = new Object[]{"one", "two"}; 
    if (o != null && o.getClass().isArray()) { 
     for (Object each : (Object[])o) { // no compile error, of course 
      System.out.println(each); 
     } 
    } 
} 
+1

이것은 실제로 작동합니다. 그것으로 논쟁하지 않을 것이다. 그러나 주조는 일반적으로 피해야합니다. '객체'가 실제로 배열이라는 것을 확신한다면 코드에서 명시 적으로 지정하십시오! 전제는 배열을 생성하는 코드를 변경할 수 있어야한다는 것입니다. –

0

이 코드를 시도 '객체는 배열이며, 배열'ArrayList '으로 캐스팅하고 반복합니다.

+0

[이 스레드를보십시오.] (http://meta.stackoverflow.com/a/250872/1686291) –

0

이 코드를 사용해보십시오.

Object o = null; 
Iterator ite = ((Iterable)o).iterator(); 
while(ite.hasNext()){ 
    Object itObj = ite.next(); 
} 
+0

[How to answer.] (http://stackoverflow.com/help/how-to-answer)를 확인하십시오. –