自定义迭代器返回对象

问题描述 投票:0回答:2

我为类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;
    }

最后我尝试遍历期望MyListListItem对象:

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;
        }
    }
java generics iterator iterable
2个回答
0
投票

您的MyListimplements Iterable,而不是implements Iterable<ListItem>。编译器会为此警告您。注意警告。


0
投票

我假设您错误地写了MyList implements MyListInterface {,却忘记了添加通用参数。这意味着您使用的是原始类型,应该not

© www.soinside.com 2019 - 2024. All rights reserved.