Generics Kotlin:传递要由Gson使用的类型

Generics 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

我想编写一个函数,使用Gson将特定的JSON
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)

我可以发誓我已经试过了,但没有成功。。。但是现在它做到了,哈哈!谢谢你,我会接受你的回答。