请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,如果返回的时候是一个泛型,gson似乎就没法转换,要怎么办?

老师,如果返回的时候是一个泛型,gson似乎就没法转换,要怎么办?下面这样的

suspend fun <P, T> getTest(param: P): BaseResponse<T> where P : BaseParam, T : BaseResult

如果按照您写的这样,通过method.genericReturnType获取类型

Gson().fromJson(it, method.genericReturnType)

gson会提示

Not enough information to infer type variable T

如果用

Gson().fromJson(it, method.returnType)

这种,运行时又会报

com.google.gson.internal.LinkedTreeMap cannot be cast to BaseResponse

这个时候应该要怎么处理?T我在使用前我自己也不知道啊

正在回答 回答被采纳积分+3

1回答

bennyhuo 2021-03-23 09:40:29

挂起函数的返回值类型是 Object,不是 BaseResponse<T>,你要想知道 T 的类型,你得用 suspend 函数生成的 Continuation 参数的泛型参数来获取。

0 回复 有任何疑惑可以回复我~
  • 提问者 毛豆先生在广州 #1
    我就说怎么看了那么多次,这个返回的类都不太对,都是object,老师,如果要获取Continuation 参数应该怎么获取啊?课程里面有没有说啊?我还没有时间看完的说
    回复 有任何疑惑可以回复我~ 2021-03-23 11:55:36
  • 提问者 毛豆先生在广州 #2
    是不是通过获取方法的参数来获取啊?这个挂起函数的最后一个参数应该就是Continuation吧?
    回复 有任何疑惑可以回复我~ 2021-03-23 12:03:19
  • bennyhuo 回复 提问者 毛豆先生在广州 #3
    对,就是参数,genericParameter类似的方法
    回复 有任何疑惑可以回复我~ 2021-03-23 19:24:32
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信