Gson解析泛型类型:
Res<Data>
Type type = new TypeToken<Res<Data>>(){}.getType();
Res<Data> res = new Gson().fromJson("json数据",type);
//自定义解析 类似于TypeToken
static abstract class TypeRefrence<T> {
Type type;
public TypeRefrence() {
//获得泛型类型
Type genericSuperclass = getClass().getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
//可能有多个泛型A<T,V>
Type[] types = parameterizedType.getActualTypeArguments();//获取到泛型个数
if (null!=types&&types.length>0){
type = types[0];
}
}
public Type getType() {
return type;
}
}
//使用
//注意:{} 才能使用,有{}代表是匿名内部类;相当于动态创建了泛型指定的类
//没有 {}是创建对象
Type type = new TypeRefrence<Res<Data>>(){}.getType();
Res<Data> res = new Gson().fromJson("json数据",type);
网友评论