2013-06-06 2 views
0

다음과 같은 코드가 있습니다.반복자를 사용하는 자바 일반 배열

public class DefaultIterator<E> implements Iterator<E> { 
private E[] array; 
private int i = 0; 

public DefaultIterator(E[] array) { 
    this.array = array; 
} 

@Override 
public boolean hasNext() { 
    return false; 
} 

@Override 
public E next() { 
    return array[i++]; 
} 

@Override 
public void remove() { 

} 

}

// here is my execution. 
    public Iterator<String> createNewIterator(Iterator<String>... generalIterators) { 
    return new DefaultIterator<Iterator<String>[]>(generalIterators); 
} 

나는 실행 코드를 컴파일 오류가 발생하고있다. 누군가가 실패한 이유와 그것을 고치는 방법을 설명 할 수 있습니까?

감사합니다.

+0

컴파일 오류 란 무엇입니까? 그것을 포함시킬 수 있다면 도움이 될 것입니다. –

+0

생성자 DefaultIterator []> (반복자 [])가 정의되지 않았습니다. – user826323

+0

Mac,이 문제가 발생합니다. DefaultIterator >을 Iterator로 변환 할 수 없습니다. user826323

답변

3

따라서 제네릭 형식이 필드 선언, 생성자 선언 및 메서드 선언 사이에서 일치하지 않는다는 불만이 있습니다.

당신이 원하는 :

public Iterator<String> createNewIterator(String... generalIterators) { 
    return new DefaultIterator<String>(generalIterators); 
} 
+0

반환 유형으로 'Iterator '을 원합니다. – user826323

+0

그런 다음 두 번째 예제는 정상적으로 작동해야합니다. –

0

귀하의 반환 형식이 예상보다 또 다른 하나입니다! DefaultIterator<Iterator<String>[]>은 반환 유형으로 Iterator<String>Choose DefaultIterator<Iterator<String>[]>과 호환되지 않습니다. 해결해야합니다.

관련 문제