2012-06-15 3 views

답변

4

좀 더 컴팩트하게 수행 할 수 있습니다

for(String i:list){ 
} 

구문은 (열거 형과도되지 않음)에만 직접 반복 가능 객체 및 배열에 대한, 아니 자신의 반복자입니다.

왜 안 되니? 나도 몰라 ... "희소 한"경우에 너무 많은 복잡성/노력 (컴파일러 구현에서). 또는 문제를 일으킬 수있는 가장자리 케이스 (예 : 반복자 인 Iterable 같은 경우 일부 사람들은 그러한 짐승을 만든다고 생각합니다).

반복자, 컬렉션 및 친구들과 함께 작업하는 좀 더 편리한 방법을 얻으려면 Google 구아바와 같은 라이브러리를 사용해보세요.

+0

답변을 주셔서 감사합니다. 이유를 알고 싶습니다. – Koerr

2

컴파일러 향상을위한 구문을 확인하고 콜론 다음 표현식은의 Iterable 인터페이스를 구현하는 객체를 반환해야. 반복자는 그것을 구현하지 않습니다.

+0

배열은'Iterable' 인터페이스를 구현하고 있지 않습니까? for (int i : new int [] {1,2,3}) {... – Koerr

+0

'for (Integer i : Arrays.asList (new Integer [ ] {1,2,3}) {...' – pap

+1

아니요, Iterable 참조에 할당 할 수 없지만 특별한 경우입니다. 컴파일러는 배열인지 반복자인지 여부에 따라 트래버스 할 수 있습니다. 그래서 당신은 Iterable을 구현하는 배열이나 클래스를 사용할 수 있습니다. –

-1
for(String i:list){ 
     // 
    } 
2

for 루프 구문은 Iterable 인터페이스를 구현하는 개체에만 사용할 수 있습니다.

반복자는 반복 할 수 없습니다.

관련 문제