私はここStackOverflowで同様の質問をたくさん知っていますが、私の答えは何もありません。
私は一般的なデータクラスを持っています:
data class ServiceCall<out T>(val result: T?, val exception: String?, val pagination: String?, val stringResult: String?)
私はこのように使用しようとしています:
Gson().fromJson(json, ServiceCall<SurveyListModel>::class.Java).result
IDEにエラーが表示されます:クラスリテラルの左側にあるのはクラスのみです
これを解決するには?前もって感謝します。
ここで簡単に確認できるように、class
でジェネリックを使用することはできません。
List<Int>::class.Java
同じエラーが発生します。 GSON逆シリアル化で一般的なtypを使用するには、ここで提案されていることを実行します。
https://stackoverflow.com/a/5554296/8073652
編集:
Kotlinでは、次のようになります。
val type: Type = object : TypeToken<ServiceCall<SurveyListModel>>() {}.type
Gson().fromJson<ServiceCall<SurveyListModel>>(json, type).result
これがコンセプトの小さな証明です、私は書きました:
class Token : TypeToken<List<Int>>()
val x: List<Int> = Gson().fromJson(Gson().toJson(arrayOf(1)), Token().type)
println(x)