JMemo035

Iteratorの実際のクラス

ArrayListを作ってそこでiterator()メソッドを使って反復子のインスタンスを得た場合、 何のクラスが使われているのか気になったので調べてみた。

public static void main(String[] args) {
	List<String> list = new ArrayList<String>();
	Iterator<String> it = list.iterator();
	System.out.println(it);
	System.out.println(it.getClass().getCanonicalName());
	System.out.println(it.getClass().getSimpleName());
	System.out.println(it.getClass().getName());
}

結果はこう。

java.util.AbstractList$Itr@10b30a7
java.util.AbstractList.Itr
Itr
java.util.AbstractList$Itr

どうやらAbstractListクラス(ArrayListの親クラスだな)の中に「Itr」ってクラスがあって、 それが使われているらしい。 AbstractListの中を覗くと…確かにそんなクラスがあるねえ。 プライベートクラスになっていて、AbstractListが持っているフィールドを参照しながら動作するようだ。

ただ、API仕様書にはこのクラスの説明はない。まあ、プライベートクラスだし、 一般コーダーは気にしなくていい部分なんだから、当たり前か…。

最終更新:2013年04月04日 13:26