Generics Kotlin:传递要由Gson使用的类型
我想编写一个函数,使用Gson将特定的JSONGenerics Kotlin:传递要由Gson使用的类型,generics,kotlin,gson,Generics,Kotlin,Gson,我想编写一个函数,使用Gson将特定的JSONString反序列化为特定类型的对象,并返回该对象。 此类型可以是标准的Kotlin类型(例如布尔型,字符串,等等),也可以是我的应用程序类型之一(例如,用户)或泛型类型(例如哈希映射) 此函数的简化版本如下: fun <T> get(jsonString: String, typeOfObj: /*type goes here. T???, typeOf???, etc*/): T? { return gson?.fromJso
String
反序列化为特定类型的对象,并返回该对象。
此类型可以是标准的Kotlin类型(例如布尔型
,字符串
,等等),也可以是我的应用程序类型之一(例如,用户
)或泛型类型(例如哈希映射
)
此函数的简化版本如下:
fun <T> get(jsonString: String, typeOfObj: /*type goes here. T???, typeOf???, etc*/): T? {
return gson?.fromJson(jsonString, typeOfObj)
}
fun get(jsonString:String,typeOfObj:/*type放在这里。T???,typeOf???等*/):T?{
返回gson?.fromJson(jsonString,typeOfObj)
}
我想将其称为传递字符串,以及我希望从反序列化中返回的类型,如下所示:
val result: HashMap<Int, Boolean> = get(myString, Map<Int, Boolean>)
val结果:HashMap=get(myString,Map)
我已经尝试过使用内联
和具体化
,KType
,等等,但是我仍然被卡住了,因为我对Kotlin的类型系统和反射API没有经验
允许我以这种方式编写和调用此函数的参数类型是什么?您可以使用以下内联函数:
inline fun <reified T> fromJson(json: String): T {
return Gson().fromJson(json, object: TypeToken<T>(){}.type)
}
inline-fun-fromJson(json:String):T{
返回Gson().fromJson(json,对象:TypeToken(){}.type)
}
接下来:
val result = Gson().fromJson<Result>(pref.result)
val result=Gson().fromJson(pref.result)
您也可以使用这些:
val turnsType = object : TypeToken<List<Turns>>() {}.type
val turns = Gson().fromJson<List<Turns>>(pref.turns, turnsType)
val-turnsType=object:TypeToken(){}.type
val turns=Gson().fromJson(pref.turns,turnsType)
我可以发誓我已经试过了,但没有成功。。。但是现在它做到了,哈哈!谢谢你,我会接受你的回答。