0

我有以下类签名:public class LoopIterator<E> implements Iterator<E>. 我有一个现有的构造函数:public LoopIterator(Iterable<E> iterable){. 我试图在我的主类/主函数中输入以下内容:

LinkedList<String> l= new LinkedList<String>();
l.add("1"); l.add("2"); l.add("3"); l.add("4");
LoopIterator<LinkedList<String>> m= new LoopIterator<LinkedList<String>>(l);

但我不能,因为构造函数期望得到Iterable<E>不符合LinkedList<String>.

那么如何更改我的构造函数/类签名,以便我可以输入构造函数 E 类型的任何 Iterable ?

4

2 回答 2

5

在这种情况下,LinkedList 实现了 Iterable,E 是迭代时返回的对象类型(即字符串)。

所以,你需要...

LoopIterator<String> m = new LoopIterator<String>( l);

编译器应该更开心。

于 2012-06-30T11:49:11.253 回答
0
LoopIterator<LinkedList<String>> m= new LoopIterator<LinkedList<String>>(l);

在左侧,您定义m.next()将返回实例,LinkedList<String>但在右侧,您将传递迭代String实例的内容。所以这是一个矛盾!

只要说出你想要的!m.next()将返回以下实例String

LoopIterator<String> m = new LoopIterator<String>( l);
于 2012-06-30T12:05:33.087 回答