Пожалуйста, помогите мне понять ниже:О Iterator и Iterable интерфейса конструкторов
Так как Iterable
и Iterator
интерфейсы так кодирование Iterator<T> it = new Iterator<T>();
получат error(interface has no constructor ?)
.
Но почему коды ниже работают нормально? new Iterable<String>() { --- }
и его вложенность new Iterator<String>()
являются конструкторами интерфейсов Iterable
и Iterator
, только они возвращают анонимные объекты против «it» реального объекта.
public class MultiIterableClass extends IterableClass {
public Iterable<String> reversed() {
return new Iterable<String>() {
public Iterator<String> iterator() {
return new Iterator<String>() {
int current = words.length -1;
public boolean hasNext() { return current > -1; }
public String next() { return words[current--]; }
public void remove() { // Not implemented
throw new UnsupportedOperationException();
}
}
}
}
}
}
2-й вопрос заключается в том, что вышеуказанные коды (от мышления в Java 4-Ed) являются сложными с конструктором вложенностью другого конструктора, каково reversed()
возвращения? Верните Iterable-object
или верните Iterator-object
или обоими? Если оба являются порядком возврата?
Благодаря
ZW
Вы спрашиваете, в чем разница между 'new Iterator();' и 'new Iterator() {...};'? –
Познакомьтесь с [анонимными классами] (http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html) и [внутренними классами] (http://docs.oracle.com/javase/tutorial /java/javaOO/innerclasses.html). – jedwards
Что касается # 2, 'reverseed()' возвращает (объект, который реализует) 'Iterable'. Интерфейс ['Iterable'] (http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html) указывает, что объект имеет метод' iterator() ', который возвращает объект, который [реализует 'Iterator'] (http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html). – jedwards