#java #arrays #object #iterator
#java #массивы #объект #итератор
Вопрос:
Я пытаюсь создать класс Iterator, который может выполнять итерацию множества объектов по моему выбору. В колледже я видел предложения по использованию типа Object (поскольку это суперкласс object), но я не уверен, как это сделать.
Я создал конструктор, который получает в качестве параметров Object[] и количество элементов. Однако, когда мне нужно вернуть этот объект, это не позволяет мне указать его несовместимый тип.
public class IteratorClass implements Iterator {
Object[] objIt;
int elemCounter;
int currNumber = 0;
/**
* Constructor of the Iterador
*/
public IteratorClass(Object[] objIt, int elemCounter) {
this.elemCounter = elemCounter;
this.objIt = objIt;
}
public Object next() {
return objIt[currNumber ];
}
}
Я ожидал, что он вернет объект типа, который я ввел в конструктор, но это не позволяет мне.
Комментарии:
1. Начните использовать Java 1.5 и выше, в ней есть обобщения. Не нужно изобретать велосипед.
2. Обратите внимание, что Java 1.5 сейчас 15 лет.
3. Также обратите внимание, что
Arrays.asList(yourArray).iterator()
это дало бы вам корректно функционирующий итератор с гораздо меньшим количеством кода.4. @AndyTurner, я думаю, это должно быть учебным упражнением, поэтому задача состоит в том, чтобы попытаться изобрести велосипед.
5. @TiagoMirais, пожалуйста, объясните, что это значит: «это не позволяет мне говорить, что это несовместимый тип». Откуда вы получаете эту ошибку? Ваш
IteratorClass
не компилируется или код, в котором вы пытаетесь использовать егоnext()
функцию?
Ответ №1:
Причина, по которой это не сработало, заключалась в том, что интерфейс, который я реализую в этом классе, имеет метод next(), возвращающий объект типа, отличного от Object .
Комментарии:
1. Рассмотрите возможность принятия ответа (галочка слева), чтобы этот вопрос не появлялся в списках вопросов без ответов.