Java泛型,不能使用任何可迭代对象的参数制作构造函数



>我有以下类签名: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);

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

那么我如何更改我的构造函数/类签名,以便我可以输入构造函数任何种类的 E 可迭代对象?

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

所以,你需要...

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

编译器应该更快乐。

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

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

随便说吧! m.next()将返回String的实例:

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

最新更新