kagamihogeの日記

kagamihogeの日記です。

java.util.AbstarctCollection探訪

よく使うAPI代表格のCollectionフレームワーク。そのうちのListを見て見ようと思います。が、継承階層がそこそこあるし、スーパークラスのメソッド使うケースも多いのでコレから。

・・・とはいえ、この辺は階層こそが重要なのでコードの分量はさしてないです。でも、一つだけ面白い点があったのでメモ。

java.lang.reflect.Array

Object toArray(Object)の中身についてです。これに空の配列入れるやり方はJavaのTipsとして有名かなと思います。で、そのとき何が起きてるかですが・・・

public Object toArray(Object a) {
int size = size();
if (a.length < size)
a = (Object[])java.lang.reflect.Array.newInstance(
a.getClass().getComponentType(), size);

コレクションのサイズが渡された配列サイズより小さければ、コレクションのサイズ丁度の配列を新しく作り直します。

それはともかくとして、java.lang.reflect.Array.newInstance()。java.util.Arraysは良く見るけど、これは初見。リフレクションはそうは使わないけど、配列インスタンスの生成はこっち使うんですな。