Как создать итератор, который может выполнять итерации многих типов объектов

#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. Рассмотрите возможность принятия ответа (галочка слева), чтобы этот вопрос не появлялся в списках вопросов без ответов.