java在方法中使用泛型类型信息
我有一个方法,其定义如下:
public static <T> List fromInputStreamToObject(InputStream inputStream, Class<T> clazz) throws Exception{
List objects = null;
try {
if(inputStream!=null){
Reader reader = new BufferedReader(new InputStreamReader(
inputStream));
Type typeOfSrc = new TypeToken<JsonConverter<T>>(){}.getType();
JsonConverter jsonConverter = getGson().fromJson(reader, typeOfSrc);
if(jsonConverter!=null)
objects = jsonConverter.getData();
}
} catch (Exception e) {
throw e;
}
return objects;
}
这不会给出任何编译错误,但是
Type typeOfSrc = new TypeToken<JsonConverter<T>>(){}.getType();
给出运行时异常“类型'T'不是类、ParameterizedType或GenericarArrayType。无法提取类。”
如何使用T初始化我的TypeToken实例强>
# 1 楼答案
试试这个
# 2 楼答案
我已经几个月没有使用GSON了,但我记得:类是一种类型。您只需传递参数“clazz”来代替计算出的“typeOfSrc”