parameterizedType.getActualTypeArguments()[0]是什么意思?
Posted LQS_Android
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了parameterizedType.getActualTypeArguments()[0]是什么意思?相关的知识,希望对你有一定的参考价值。
不管是使用Gson还是FastJSon结合泛型解析数据时都会用到这个,那么它是什么意思呢?
使用FastJson时:
private ApiResponse<T> parseResponse(Response response, JsonCallback<T> callback)
String message = null;
int status = response.code();
boolean success = response.isSuccessful();
ApiResponse<T> result = new ApiResponse<>();
//获取convert实例对象,解析数据
Convert convert = ApiService.sConvert;
try
String content = response.body().string();
if (success)
if (callback != null)
ParameterizedType type = (ParameterizedType) callback.getClass().getGenericSuperclass();
Type argument = type.getActualTypeArguments()[0];
result.body = (T) convert.convert(content, argument);
else if (mType != null)
result.body = (T) convert.convert(content, mType);
else
Log.e("request", "parseResponse: 无法解析 ");
else
message = content;
catch (Exception e)
message = e.getMessage();
success = false;
status = 0;
result.success = success;
result.status = status;
result.message = message;
return result;
或者使用Gson时:
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]就是这个数组中第一个了,简而言之就是获得超类的泛型参数的实际类型。
以上是关于parameterizedType.getActualTypeArguments()[0]是什么意思?的主要内容,如果未能解决你的问题,请参考以下文章