使用Gson结合泛型解析数据时,用到了这么一个方法 parameterizedType.getActualTypeArguments()[0]
那么它是什么意思呢?
T model = null;
try {
Gson gson = new Gson();
ParameterizedType parameterizedType = (ParameterizedType) requestCallBack.getClass().getGenericSuperclass();
Type type = parameterizedType.getActualTypeArguments()[0];//获得超类的泛型参数的实际类型
model = gson.fromJson(result, type);
requestCallBack.onSuccess(result, model);
} catch (JsonSyntaxException e) {
requestCallBack.OnFailure(e);
}
getClass().getGenericSuperclass()返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type,然后将其转ParameterizedType。
getActualTypeArguments()返回表示此类型实际类型参数的 Type 对象的数组。
[0]就是这个数组中第一个了,简而言之就是获得超类的泛型参数的实际类型。
本例中即为获得T的type。
网友评论