【发布时间】:2020-04-28 18:23:38
【问题描述】:
我为 MyList 类编写了一个自定义迭代器,如下所示:
private class MyListIterator implements Iterator<ListItem> {
// Constructor
public MyListIterator() {
nextElement = head;
}
@Override
public ListItem next() {
...
}
然后在 MyList 类中创建一个新的 MyListIterator,如下所示:
@Override
public Iterator<ListItem> iterator() {
MyListIterator iterator = new MyListIterator();
return iterator;
}
最后我尝试迭代一个 MyList 对象,期望 ListItems:
MyList list = new MyList();
for (ListItem item : list ) {
System.out.println(item.value);
}
但我得到不兼容类型错误,因为迭代器返回 Object 类型而不是 ListItem。我该如何解决?
编辑:MyList 实现 MyListInterface:
public interface MyListInterface<T extends Comparable<T>> extends Iterable<T> {
public Iterator<T> iterator();
}
但我不能更改MyListInterface中的任何内容
private class ListItem {
Comparable value;
ListItem previous;
ListItem next;
public ListItem(Comparable value) {
this.value = value;
}
}
【问题讨论】:
-
list.iterator()呢? -
MyList是否实现Iterable或Iterable<ListItem>?
标签: java generics iterator iterable