#java #list #iterator
#java #Список #итератор
Вопрос:
Я реализую неизменяемый список на основе AbstractSequentialList . Теперь, согласно документации Oracle:
Для неизменяемого списка программисту нужно только реализовать методы hasNext, next, hasPrevious, previous и index итератора списка.
Проблема в том, что, похоже, я должен предоставить реализацию для методов remove, set и add, хотя они вообще не нужны из-за неизменяемого характера списка, в противном случае компилятор жалуется, потому что эти методы не реализованы.
Итак, я делаю что-то не так или это реальный путь? должен ли я реализовывать такие методы и создавать в них какое-то исключение или около того?
Заранее большое спасибо,
Ответ №1:
Просто добавьте UnsupportedOperationException
методы, которые вам не нужно реализовывать. Как указано Iterator
ListIterator
в документации / interface https://docs.oracle.com/javase/7/docs/api/java/util/ListIterator.html#remove ()
Выдает: исключение UnsupportedOperationException — если операция удаления не поддерживается этим итератором списка
например
@Override
public void remove() {
throw new UnsupportedOperationException("Not supported yet.");
}
Ответ №2:
http://docs.oracle.com/javase/6/docs/api/java/lang/UnsupportedOperationException.html
Выдается, чтобы указать, что запрошенная операция не поддерживается.
например
@Override
public void remove() {
throw new UnsupportedOperationException("Cannot remove from unmodifiableList");
}