ジェネリクス関数で instanceof T を使用するには
androidのjavaの開発において、ジェネリクス関数で、子Viewの中で指定したクラス型と等しいものを返す関数を作成しました。
その中で instanceof T をやりたいのですがコンパイルエラーになります。
いちお下記のように引数でクラス型を渡せば目的のことはできたんですが、やりかたとして正しいのでしょうか?
アドバイスをよろしくお願い致します。
List<ImageView> views = Utils.getChildViews(this, ImageView.class);
public static <T> List<T> getChildViews(View parent, Class<T> class_, boolean isDeep) {
List<T> result = new ArrayList<T>();
if (ViewGroup.class.isAssignableFrom(parent.getClass())) {
ViewGroup parent_ = (ViewGroup)parent;
for (int i=0, length=parent_.getChildCount(); i<length; i++) {
View child = parent_.getChildAt(i);
if (class_.isAssignableFrom(child.getClass()))
result.add((T)child);
if (isDeep && ViewGroup.class.isAssignableFrom(child.getClass()))
result.addAll((List<? extends T>)getChildViews(child, class_, isDeep));
}
}
return result;
}