- 35
- 0
前提:已知
Type typeOfObjectsListNew = new TypeToken<ArrayList<T>>() {}.getType();
范型T会被擦除。正确写法是新建一个type对象,实现ParameterizedType接口,把Type类型传进去。
@Override
public Type[] getActualTypeArguments() {
return new Type[] {type};
}
@Override
public Type getRawType() {
return ArrayList.class;
}
@Override
public Type getOwnerType() {
return null;
}
问题来了:
看了源码,两者区别主要在于TokenType的构造函数里,错误写法是通过传进去的 Class调用 getgencirSuperClass(), 得到其 超类 及 <具体范型T> 。目前大概理解是这一阶段在经过编译后,具体范型被擦除,导致此函数返回null(还是Object?)?。从而无法获取下一步的Type.
而正确写法是直接传进去了指定的Type (不需要通过class来获取type了?),从而避免了范型擦除带来的影响?
以上是我自己看代码的理解,感觉有点模糊。还请大家指点一二。讲的再细一点,谢谢!
另外,目前自己采用的是 AA+动态代理+反射来请求和解析,在请求构建参数的时候通过反射拿到网络回调callback<T>的T(具体单一请求的解析dto),在请求回来的时候拿T去解析jsonobject,这样通过外部注入范型,可以避免上面的情况发生。
0
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
