Interface Iterator

Рейтинг: 0Ответов: 1Опубликовано: 22.10.2014

Использую Eclipse IDE. С java я новичок. Итак, поехали!

Документация говорит, что в интерфейсе Iterator есть три метода:

boolean hasNext(); E next(); void remove();

Я создаю класс Wtf, реализующий данный интерфейс, после чего жму "add unemplemented methods". Вот что получаю:

package wtf;

import java.util.Iterator;

public class Wtf implements Iterator<Integer>
{
    @Override
    public boolean hasNext() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public Integer next() {
        // TODO Auto-generated method stub
        return null;
    }

    public static void main (String... args){
        System.out.println("WTF?");
    }
}

Мало того, что среда не добавила remove(), так код ещё и работает!!! Тогда я подумал про ошибку в документации, ну мало ли... Добавил в класс следующие строчки кода:

@Override
public void remove(){
}

И опять всё замечательно!!! Т.е. метод remove() есть в данном интерфейсе, но я его могу не определять в реализующем данный интерфейс классе!!! Что скажите по этому поводу, уважаемые программисты? :)

Ответы

▲ 4Принят

Что скажите по этому поводу, уважаемые программисты?

Скажу, что у вас Java 8, а там метод remove() в интерфейсе Iterator имеет дефолтную реализацию.

Обновление

Так надо читать javadoc к той версии Java, которую используете: http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html

default void remove()