有这么一个带类型参数的类,就叫S
吧
你的目的是获取S
里面的data
,这很关键
class S<T>(
val data: T
//.....省略其他成员变量
)
可以看成网络包,不解释了
Gson().fromJson()
函数声明如下
public <T> T fromJson(String json, Type typeOfT)
public <T> T fromJson(Reader json, Class<T> classOfT)
这里只谈第一个,假如现在要将一个S<String>
的Json
转成对应的S
(这里为了方便就用的String
),那么正常来说需要如下的代码
val type = object: TypeToken<S<String>>(){
}.type
val s = Gson().fromJson(sJson, type)
这就有一个问题,也不算是问题。就是你使用的S
具有泛型参数,但是你json
转obj
的时候还得去写TypeToken....
一堆代码,如果要转的次数多就很烦,很多样板代码。
所以似乎可以这样
fun <T> jsonToT(sJson: String){
val type = Object: TypeToken<S<T>>(){
}