Поэтому для моего назначения требуется, чтобы я реализовал интерфейс в одном из моих классов. Интерфейс - это общий Итератор, который должен будет переопределить методы hasNext() и next(). Я получаю сообщение об ошибке, когда пытаюсь назначить итератор экземпляра ArrayList экземпляру Iterator.Проблема присвоения итератора Java
Вот мой интерфейс:
public interface Iterator <E>
{
boolean hasNext();
E next();
void remove();
}// end Iterator interface
А вот класс, который реализует этот интерфейс:
import java.util.*;
import java.io.*;
public class WordDatabase implements Iterator<String>
{
// Declaration
private List<String> aList;
private Iterator<String> aListIterator;
/**** Other Class Methods Here *****/
@SuppressWarnings("unchecked")
public void shuffle()
{
// Declaration
int rand;
String temp;
// Statement
// shuffling ArrayList
for(int i = 0; i < getAlist(); i++)
{
rand = (int)(Math.random() * getAlist() - 1);
// swapping two ArrayList entry
temp = aList.get(i);
aList.remove(i);
aList.add(i, aList.get(rand));
aList.remove(rand);
aList.add(rand, temp);
}
aListIterator = aList.iterator();
return;
}// end shuffle method
Eclipse, говорит мне, что я должен бросить aList.iterator()
к Iterator<String>
, но при этом выдает ошибку java.util.AbstractList$Itr cannot be cast to Iterator
. Может кто-нибудь помочь мне понять эту проблему?
Когда вы говорите «Вот мой интерфейс», вы имеете в виду здесь образец java.util.Interator? Или у вас есть собственное объявление интерфейса Iterator в вашем собственном пакете? Если у вас есть собственный интерфейс Iterator, это вызовет проблемы. – AgilePro
@AgilePro Да, у меня есть собственный интерфейс итератора. – Nathan