Предположим, вы указали класс в Java, который расширяет интерфейс Iterable
. Этот класс должен предоставить Iterator
, который должен возвращать экземпляр окружающего класса, взгляните на метод main.
public class Test implements Iterable<Test> {
@Override
public Iterator<Test> iterator() {
return new Iterator<Test>() {
private boolean onlyOnce = false;
@Override
public boolean hasNext() {
return false;
}
@Override
public Test next() {
if (!onlyOnce) {
onlyOnce = true;
// TODO return
}
throw new NoSuchElementException("Iterator has already been called");
}
};
}
public static void main(String[] args) {
Test test = new Test();
Test test2 = test.iterator().next();
boolean b = test == test2; // should be true
}
}
Как решить эту проблему в Java?