0

私は次のクラス署名を持っています:public class LoopIterator<E> implements Iterator<E>。私は既存のコンストラクターを持っています:public LoopIterator(Iterable<E> iterable){。Mainクラス/Main関数に次のように入力しようとしました。

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>準拠していないgetを期待しているため、私はできません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 に答える