//获取接口的泛型
Type[] types = o.getClass().getGenericInterfaces(); ParameterizedType parameterizedType = (ParameterizedType) types[index]; Type type = parameterizedType.getActualTypeArguments()[index];
//获取类上的泛型
Type type = o.getClass().getGenericSuperclass(); if (type instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) type; Type actType = parameterizedType.getActualTypeArguments()[index]; }
/**
* Gson解析不支持泛型,利用ParameterizedType获取泛型参数类型
*/
private static class ParameterizedTypeImpl implements ParameterizedType {
Class clazz;
public ParameterizedTypeImpl(Class clz) {
clazz = clz;
}
@Override
public Type[] getActualTypeArguments() {
return new Type[]{clazz};
}
@Override
public Type getRawType() {
return List.class;
}
@Override
public Type getOwnerType() {
//返回Type对象
return null;
}
}
public static <T> List<T> parseJsonArrayWithGson2(String json,Class<T> clazz) {
//泛型转换
Type type = new ParameterizedTypeImpl(clazz);
List<T> list = new GsonBuilder().registerTypeAdapterFactory( DataTypeAdaptor.FACTORY).create().fromJson(json, type);
return list;
}