Not enough information to infer type variable T, в Gson.fromJson()

Ошибка возникает в gson.fromJson

Ошибка : Not enough information to infer type variable T

Я не знаю как это можно исправить или изменить

class TestSaveLoad<T> {
    val gson = Gson()
    var jsonString: String = ""

    fun load(): T {
        val type = object : TypeToken<T>(){}.type
        val obj = gson.fromJson(jsonString, type)
        Log.e("TEST", "onStart: ${obj.toString()}")
        return obj
    }

    fun save(t: T) {
        jsonString = gson.toJson(t)
    }
}

Ответы (2 шт):

Автор решения: дон луис

Не знаю насколько это правильно, но оно работает.

class TestSaveLoad<T>(var clazz: Class<T>) {
    val gson = Gson()
    var jsonString: String = ""

    fun load():T  {
        val obj = gson.fromJson(jsonString, clazz)
        return obj
    }
    fun save(t: T) {
        jsonString = gson.toJson(t)
    }
}

пример использование

        val user = UserResponse(1, "dd", "ddd", "ddd")
        val testSaveLoad = TestSaveLoad(UserResponse::class.java)
        testSaveLoad.save(user)
        val userResponse = testSaveLoad.load()
        Log.e("TEST", "onStart: ${userResponse.idUser}")
→ Ссылка
Автор решения: Eugene Krivenja

В Котлине есть вот такой трюк
https://kotlinlang.org/docs/inline-functions.html#reified-type-parameters
Одно лишь ограничение - работает на уровне функции.

class TestSaveLoad {
    val gson = Gson()
    var jsonString: String = ""

    inline fun <reified T> load(): T {
        val obj = gson.fromJson(jsonString, T::class.java)
        println("onStart: ${obj.toString()}")
        return obj
    }

    fun <T> save(t: T) {
        jsonString = gson.toJson(t)
    }
}
→ Ссылка