ListIteratorのインスタンスをIterator型で返したいです
ここに質問の内容を詳しく書いてください。
Javaでイテレータを使用した課題に取り組んでいます。
Iteratorインターフェースをインポートしたクラス内でiteratorメソッドを実装する際に、同一クラス内にあるインナークラスのインスタンスを返したいです。
発生している問題・エラーメッセージ
キャストを利用して型を変えようとしましたが変換できませんでした。
@Override
public Iterator<E> iterator() {
//MyIteratorのインスタンスを返す
return (Iterator<E>) new MyIterator();
}
のように記述してキャストしました。
エラーメッセージ
java.lang.ClassCastException: edu.ics211.h06.CircularDoublyLinkedList cannot be cast to...
該当のソースコード
Java
1import java.nio.channels.UnsupportedAddressTypeException; 2import java.lang.Iterable; 3import java.util.Iterator; 4import java.util.NoSuchElementException; 5 6//以上インポート 7public class CircularDoublyLinkedList<E> implements Iterable<E> { 8 private int size = 0; 9 public DLinkedNode head; 10 public DLinkedNode tail; 11 12 public CircularDoublyLinkedList(){ 13 //initialize the member variables 14 size = 0; 15 head = null; 16 tail = null; 17 } 18 19 public CircularDoublyLinkedList(E[] items) { 20 this(); 21 for(E item: items) { 22 add(item); 23 } 24 } 25 26 private class DLinkedNode { 27 E item; 28 DLinkedNode next; 29 DLinkedNode prev; 30 31 public DLinkedNode(E item, DLinkedNode next, DLinkedNode prev) { 32 this.item = item; 33 this.next = next; 34 this.prev = prev; 35 } 36 } 37 38 @Override 39 public Iterator<E> iterator() { 40 //MyIteratorのインスタンスを返す 41 return null; 42 } 43 44 private class MyIterator implements ListIterator<E>{ 45 private DLinkedNode nextNode; 46 private int nextIndex; 47 private DLinkedNode lastReturned; 48 49 public MyIterator() { 50 //Initialize my member variable 51 nextNode = head; 52 nextIndex = 0; 53 lastReturned = null; 54 } 55 ... 56
試したこと
キャストを利用して型を変える
補足情報(FW/ツールのバージョンなど)
Eclipse
回答2件
あなたの回答
tips
プレビュー