例如,我有 A、B、C 类,它们都在一个中List<Object>
(列表来自 XML-Parser,我对这部分没有影响)。通常我只需要一种类型。所以我写了以下课程:
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 检查。请改用其擦除对象,因为更多的泛型类型信息将在运行时被擦除
但我没有得到确切的问题,在编译时所有可能的返回类型都是已知的?