Я создаю свою собственную коллекцию класс, реализующий интерфейс Iterable
на Java. Тем не менее, я получаю ошибку компиляции, говоря:Ошибка компиляции Java Generics: несовместимые типы: Item # 1 не может быть преобразован в Item # 2
Nikolass-MacBook-Pro:week2 nburk$ javac Deque.java
Deque.java:115: error: incompatible types: Item#1 cannot be converted to Item#2
Item currentItem = current.item;
^
where Item#1,Item#2 are type-variables:
Item#1 extends Object declared in class Deque
Item#2 extends Object declared in class Deque.DequeIterator
1 error
Ниже приведены соответствующие части моего кода:
public class Deque<Item> implements Iterable<Item> {
// return an iterator over items in order from front to end
public Iterator<Item> iterator() {
return new DequeIterator<Item>();
}
private class DequeIterator<Item> implements Iterator<Item> {
public DequeIterator() {
}
public Item next() {
Item currentItem = current.item; // this line causes the ERROR
current = current.next;
return currentItem;
}
}
}
Я считаю, что вопрос несколько связано с тем, что я использую генерики в неправильный путь, и мое объявление Item
может быть неправильным. Тем не менее, я сравнивал свою реализацию с this quick tutorial и не вижу различий, которые могут вызвать проблему на моей стороне. Кто-нибудь, чего мне не хватает, и как я могу избавиться от ошибки?
спасибо за быстрый ответ! удаление '- ' дает мне еще одну ошибку компиляции: 'Deque.DequeIterator не принимает параметры return new DequeIterator
- ();' –
nburk
@nburk О да, удалите любую параметризацию 'DequeIterator'. –
ha! компилирует! большое спасибо!! – nburk