リフレクションで配列の扱い
配列要素の型の取得
Class#getComponentType()
配列のインスタンスの作成
Array#newInstance(componentType, length);
用例↓
http://d.hatena.ne.jp/muimy/20080119/1200723256public static interface Selecter<T>{ public boolean select(T element); } public static<T> T[] select(T[] array, Selecter<T> selecter){ List<T> result = new ArrayList<T>(); for (T t : array) { if(selecter.select(t)){ result.add(t); } } Class<?> componentType = array.getClass().getComponentType(); Object destArrayInstance = Array.newInstance(componentType, 0); return (T[])result.toArray((T[])destArrayInstance); }
の配列版
ジェネリックスってイレイジャだから、実行時に型取れない(型が分からないからインスタンスが作れない)んですね。
return (T[])result.toArray(new T[0]);
とか書けない。