Kotlin 泛型类型没有JsonAdapter(在泛型函数内)

Kotlin 泛型类型没有JsonAdapter(在泛型函数内),kotlin,moshi,Kotlin,Moshi,在将JSON解析为泛型函数内的数据类时,我遇到了一个错误No JsonAdapter for R,我研究并尝试了许多方法,但仍然不起作用。 问题是泛型函数不知道泛型参数R的实际类型,因此在解析时无法手动指定R的类型 我如何解决这个问题 fun <T, R> sendRequest(msg: Deribit.Request.Message<T>): Deribit.Response.Result<R> { ... val type = o

在将JSON解析为泛型函数内的数据类时,我遇到了一个错误No JsonAdapter for R,我研究并尝试了许多方法,但仍然不起作用。 问题是泛型函数不知道泛型参数R的实际类型,因此在解析时无法手动指定R的类型

我如何解决这个问题

fun <T, R> sendRequest(msg: Deribit.Request.Message<T>): Deribit.Response.Result<R> {
    ...
        val type = object : TypeToken<Deribit.Response.Result<R>>() {}.type

        return moshi.adapter<Deribit.Response.Result<R>>(
            type
        ).fromJson(jsonElement.toString())
    ...
}
谢谢你,并致以最良好的问候

成功了

inline fun <reified T, reified R> sendRequest...
应该有用。或者,传递所需的类型或足够的类型以将其构造为参数。例如

fun <T, R> sendRequest(msg: Deribit.Request.Message<T>, clazzR: Class<R>): Deribit.Response.Result<R> {
    // Type object for Result<R>
    val type = Types.newParameterizedType(Deribit.Response.Result::class.java, clazzR)
    ...
}
fun <T, R> sendRequest(msg: Deribit.Request.Message<T>, clazzR: Class<R>): Deribit.Response.Result<R> {
    // Type object for Result<R>
    val type = Types.newParameterizedType(Deribit.Response.Result::class.java, clazzR)
    ...
}