2012-05-14 2 views
0

나는 아주 기본적인 질문이 있음을 염두에두고 있습니다. Iterator는 인터페이스이기 때문에 Iterator를 구현하는 클래스를 생성 한 다음 동일한 객체를 생성해야합니다. 그러나 iterator의 사용을 보았을 때 인터페이스를 구현하는 클래스를 가지지 않고 인터페이스를 직접 참조 할 때 혼란스러워했습니다. 예를 들면 다음과 같습니다.반복자 사용

HashMap map = new HashMap(); 
    map.put("1", "One"); 
    map.put("2", "Two"); 
    Iterator i = map.entrySet().iterator(); 

우리는 어떻게 인터페이스의 객체를 갖게 되나요?

+0

그리고 무엇에 대해 :'Map map = new HashMap();'? –

+0

@AlexStybaev 그것은'Map'처럼 접근 할 수있는 새로운'HashMap' 인스턴스를 얻을 것입니다. – DerMike

+0

@DerMike 알아. 그것은 Iterator와 똑같습니다. 그렇지 않습니까? 'Iterator' 인터페이스의 구현. –

답변

5

Iterator는 인터페이스이지만, map.entrySet().iterator()은 Iterator 인터페이스를 구현하는 객체를 반환합니다.

+0

추가하려면 : 여기는'HashMap'에서 사용한 실제 클래스입니다. http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/HashMap.java#HashMap.HashIterator –

0

해당 호출에서 구현할 수 있습니다. 당신은 iterator 인터페이스로 강제되는 (그리고 문서화 된) 것 이상을 가정 할 수 없다. "익명의 내부 클래스"를 찾습니다.