JAVA解决GSON解析多级泛型

在android开发的过程中,服务器返回的数据基本上都是统一的格式,为了避免类爆炸,免不了要使用泛型。网上有很多 说是  GSON解析多级泛型的,不过他们那都是对于普通用户来解答的,前几天在开发完网络请求的框架时,返回的结果使用泛型,遇到了GSON不能解析多级泛型的问题

说是,

class  can  cast  to   ParameterizedType
程序中的代码:
if (t1 instanceof ParameterizedType) {
    Type[] p = ((ParameterizedType) t1).getActualTypeArguments();
    t2Class = (class)p[0];
    T t = new Gson().fromJson(result.getResult(), t2);
    requestSuccess(t);
}
这种写法在没有泛型的情况下,才可以,但是如果含有泛型就会报错,需要将方法改为
Type t2=null;
if (t1 instanceof ParameterizedType) {
    Type[] p = ((ParameterizedType) t1).getActualTypeArguments();
    t2 = p[0];
    T t = new Gson().fromJson(result.getResult(), t2);
    requestSuccess(t);
}

这样的话,多级泛型的错误就可以完全处理了

分享一个不错的网络请求框架:https://github.com/MengLeiGitHub/AsyncHttp

 

 

转载于:https://my.oschina.net/u/2441542/blog/799716

你可能感兴趣的:(JAVA解决GSON解析多级泛型)