たとえば、クラスA、B、Cがあり、それらはすべてaに含まれていList<Object>
ます(リストはXMLパーサーからのものであり、この部分には影響しません)。通常、必要なタイプは1つだけです。だから私は次のクラスを書きました:
public class FilterForObject{
public static List<A> extractA(Result r){
return extractClass(r,A.class);
}
public static List<B> extractB(Result r){
return extractClass(r,B.class);
}
public static List<C> extractC(Result r){
return extractClass(r,C.class);
}
private static <T> List<T> exctracClass(final Result r,final Class<T> resultClass) {
List<T> ret = new ArrayList<T>(40);
for (Object o : r.getAorBorC()) {
if( o instanceof T){
ret.add((T)o); // For some reasons this doesn't work
}
}
return ret;
}
}
次の警告が表示されました。
型パラメーターTに対してinstanceofチェックを実行できません。実行時にさらにジェネリック型情報が消去されるため、代わりにその消去オブジェクトを使用してください。
しかし、正確な問題はわかりません。コンパイル時に、考えられるすべての戻り値のタイプがわかっていましたか?