Preciso criar uma “inner classe” que implementa a Interface Iterator , ou seja implementar os seus métodos hasNext(); e Next() , remove() não é necessário. Este iterator servirá pa acessar um array, tem mesmo de ser feito desta forma. tou com alguns problemas …
Esta classe está dentro de outra … put é uma variável de instancia do tipo int e de acesso private , inicializada em 0… está correcto ?
[/code]
public class auxiliar implements Iterator {
publicbooleanhasNext(){returnbuffer[put+1]!=null;}publicObjectnext(){returnbuffer[put];}publicvoidremove(){thrownewUnsupportedOperationException("não é necessário implementar");}}
Mas se vc precisa mesmo criar seu iterator o seu codigo não funciona (aliás vc poderia descobrir isso correndo o codigo)
Vc não pode fazer put+1 sem mais porque put+1 pode sair fora do limite do array. Por outro lado vc deve incrementar a variável put, que não está fazendo. Eis uma forma mais simples (não precisa ser inner class)
publicclassArrayIteratorimplementsIterator{Object[]arrayintcurrent=0;publicArrayIterator(Object[]array){this.array=array;}publicbooleanhasNext(){// se length é 0 nem começa a iterarreturncurrent<array.length;}publicObjectnext(){// primeiro aumenta o current com ++current, depois pega o valor na nova posiçãoreturnarray[++current];}publicvoidremove(){thrownewUnsupportedOperationException("Esta operação não é suportada.");}}// TesteString[]s={"a","b","c","d"};for(Iteratorit=newArrayIterator(s);it.hasNext();){System.out.println((String)it.next());}
Deixo para si a conversão para generics
Alkamavo
posta a classe que se usa o PUt tb…assim é mais facil