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